Composer autoload

使用方法

1.在composer.json加上這段:
composer.json
"autoload": {  
    "psr-0": {  
      "": "src"  
    }  
  }
2.執行composer dump-autoload

預期效果:

src 的資料夾下的 class ,只要和檔名相同在調用時統統都會自動 autoload

實際實驗:

src/helloJocoonopa.php
<?php  
class helloJocoonopa  
{  
   public function sayHello ()  
   {  
      echo __CLASS__ . '!!';  
   }  
}  
index.php
<?php
require_once( 'vendor/autoload.php'); // 這是 composer 產生的 autoload 檔案  
  
$class = array(new helloJocoonopa, 'sayHello');  
$class(); // helloJocoonopa !!  

心得

不太清楚 PSR-0 和 PSR-4的效果差別,嘗試加深目錄結構和命名空間,就完全讀不到檔案 ~ 這部份可能還是要請教一下。

但我們可以想像,配合 Symfony2Routing component,可以輕鬆不費力的建造一個簡單的 Controller-Router 架構。

後記:

除了PSR-0 外,還有一個 PSR-4 的標準,詳細介紹 。

PSR-4和PSR-0最大的區別是對下劃線(underscore)的定義不同。PSR-4中,在類名中使用下劃線沒有任何特殊含義。而PSR-0則規定類名中的下劃線
_會被轉化成目錄分隔符。

舉例: 以 jocoonopa_hello這個命名空間來說,兩個標準分別對應的檔案路徑為

PSR-0: jocoonopa/hello
PSR-4: jocoonopa_hello

不過照理來說現在的 Class 或命名空間都不會用底線了,所以 PSR-0 和 PSR-4其實基本無差別。

Comments

comments powered by Disqus