PHP PSR,全稱 PHP Standard Recommendation,是 PHP 社區中一系列編碼風格的規范。PHP PSR 規范的目的是為了讓 PHP 代碼更加統一,更加易于閱讀和維護。下面我們來詳細了解一下 PHP PSR 中一些重要縮寫。
PSR-0
<?php // 以 namespace 為根目錄,以類名為文件名,自動加載 spl_autoload_register(function ($className) { $className = ltrim($className, '\\'); $fileName = ''; $namespace = ''; if ($lastNsPos = strrpos($className, '\\')) { $namespace = substr($className, 0, $lastNsPos); $className = substr($className, $lastNsPos + 1); $fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR; } $fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php'; require $fileName; });
PSR-0 定義了 PHP 代碼的自動加載規范,要求每個 PHP 文件必須定義一個與它的 namespace 和類名相匹配的相對路徑。如下面例子中,類名為 Foo_Bar_Baz 的文件路徑應該為 Foo/Bar/Baz.php:
namespace Foo\Bar; class Baz {}
PSR-1
PSR-1 定義了 PHP 代碼中一些基本的編碼規范,如變量和函數的命名規則、空格的使用、文件的結束符等等。
PSR-2
PSR-2 定義了更多關于 PHP 代碼編碼規范的細節,如縮進的方式、花括號的使用等等。下面是一個示例代碼,符合 PSR-2 規范:
<?php namespace Vendor\Package; use FooInterface; use BarClass as Bar; use OtherVendor\OtherPackage\BazClass; class ClassName extends ParentClass implements FooInterface { const CONSTANT_NAME = 'constant value'; protected $foo; public function sampleMethod($a, $b = null) { if ($a === $b) { bar(); } elseif ($a > $b) { $this->foo($a + $b); } else { BazClass::doSomething($a, $b, self::CONSTANT_NAME); } } }
PSR-4
<?php // 以根目錄為基準,采用 namespace 和類名的目錄結構,自動加載 spl_autoload_register(function ($class) { $prefix = 'Vendor\\Package\\'; $baseDir = __DIR__ . '/src/'; $len = strlen($prefix); if (strncmp($prefix, $class, $len) !== 0) { return; } $file = $baseDir . str_replace('\\', '/', substr($class, $len)) . '.php'; if (file_exists($file)) { require $file; } });
PSR-4 和 PSR-0 非常相似,只是 PSR-4 更加靈活,可以自己定義根目錄,而且代碼可以直接以類名為文件名。
總結
以上就是 PHP PSR 中一些常見的縮寫及其含義,這些規范在實際項目開發中非常重要,既可以提升開發效率,也可以提高代碼的可讀性和可維護性。
上一篇php project
下一篇php psr 1