關於開發標準這塊,能夠說一直都是風格迥異,各家都有各家的玩法,民間更是我的玩我的的。目前咱們國內比較出名的幾個框架(Yii,Laravel) 都已經支持Composer而且加入了PHP-FIG(php框架程序組)。php
其中Composer的自動加載就支持PHP-FIG指定的PSR-0 和 PSR-4 規範來實現自動加載機制,而且Composer推薦使用PSR-4
html
這是一個自願非正式的機構,可是就目前對咱們的影響來看,可能都已經默認爲一個公信組織了,的的確確制定了很多很是好的規範laravel
目前從官網看,已經投票( http://www.php-fig.org/psr/ )經過的有7個大的規範了
git
PSR-0 自動加載規範 ( 官方已廢棄,主要是php5.3之前沒有命名空間 )github
PSR-1 編碼規範json
PSR-2 編碼風格推薦緩存
PSR-3 日誌接口php框架
PSR-4 改進的自動加載規範( 官方推薦 ,規範更簡潔調理清晰了)yii2
PSR-6 緩存接口composer
PSR-7 HTTP消息接口
在Composer 依賴管理工具實現的autoload 推薦第三方依賴庫或者項目使用 PSR-4,可是Composer自己 也是向下兼容PSR-0的
博文(Composer : php依賴管理工具)中演示代碼中,安裝了兩個庫
phpexcel
monolog
這兩個庫,phpexcel 實現的是PSR-0規範,monolog實現的確實PSR-4規範,這是從各自庫目錄下面的composer.json文件得知的
其實PSR-0 和 PSR-4 在內容上差別不大,這裏也就不說定義了
PSR-0中最後一個\以後的類名,若有下劃線會轉化成路徑分隔符 如Name_Space_Test會轉換成Name\Space\Test.php,這是出於對PHP5.3之前版本兼容的考慮
PSR-0有更深的目錄結構,好比定義了NS爲 Foo\Bar=>vendor\foo\bar\src,use Foo\Bar\Tool\Request調用NS。
若是以PSR-0方式加載,實際的目錄爲vendor\foo\bar\src\Foo\Bar\Tool\Request.php
若是以PSR-4方式加載,實際目錄爲vendor\foo\bar\src\Tool\Request.php
php-fig中文版: https://github.com/PizzaLiu/PHP-FIG
php-fig官網:http://www.php-fig.org/