PSR : php編碼規範

諸王混戰

關於開發標準這塊,能夠說一直都是風格迥異,各家都有各家的玩法,民間更是我的玩我的的。目前咱們國內比較出名的幾個框架(Yii,Laravel) 都已經支持Composer而且加入了PHP-FIG(php框架程序組)。php

其中Composer的自動加載就支持PHP-FIG指定的PSR-0 和 PSR-4 規範來實現自動加載機制,而且Composer推薦使用PSR-4
html

PHP-FIG

這是一個自願非正式的機構,可是就目前對咱們的影響來看,可能都已經默認爲一個公信組織了,的的確確制定了很多很是好的規範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自動加載

在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 和 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/ 



原文地址: PSR : php編碼規範
標籤: psr    composer    autoload    php-fig    yii    laravel   

智能推薦

相關文章
相關標籤/搜索