Composer自動加載功能

1、安裝Composerphp

這裏略過,查看:http://blog.csdn.NET/github_26672553/article/details/51759206git

 

2、github

1.首選新建一個PHP項目文件夾json

2.能夠手動寫一個composer.json,內容以下:瀏覽器

 

[plain] view plain copyapp

  1. {  
  2.     "autoload": {  
  3.         "files": ["comm/functions.php"]  
  4.     }  
  5. }  

 


從上面json信息,咱們能夠大體猜想,這是要作文件的自動加載。

 

同時,咱們新建好comm目錄和functions.php文件。這個項目結構如圖:composer

完成上面操做,咱們打開終端,cd到 test目錄下面,執行命令:函數

[plain] view plain copy測試

 在CODE上查看代碼片派生到個人代碼片

  1. composer dump-autoload  
而後在看咱們的項目,多出來一個vendor目錄,裏邊就是composer的東西:

 

至此,咱們應該來測試一下,composer到底怎麼作自動加載的?ui

咱們在comm目錄下的functions.php寫了一個函數:

 

[php] view plain copy

 在CODE上查看代碼片派生到個人代碼片

  1. function  showName() {  
  2.     echo '個人名字';  
  3. }  

而後咱們要在index.php中,調用這個函數。

 

常規的方法是先要require 'comm/functions.php', 而後才能調用funcitons.php中定義的函數。

下面咱們看composer的方式:

[php] view plain copy

 在CODE上查看代碼片派生到個人代碼片

  1. // 下面使用composer來作自動加載  
  2. // 1.第一步  
  3. require __DIR__.'/vendor/autoload.php';  
  4. // 2.使用  
  5. showName();  

 

在瀏覽器訪問index.php,咱們能夠看到成功調用了showName函數。

 

 

咱們繼續在comm目錄下,新建一個test.php文件:

[php] view plain copy

 在CODE上查看代碼片派生到個人代碼片

  1. <?php  
  2. function test(){  
  3.     echo 'test';  
  4. }  
這個時候,咱們要想在index.php中能調用test()函數,

 

須要:在composer.json中增長:

[plain] view plain copy

 在CODE上查看代碼片派生到個人代碼片

  1. "files": ["comm/functions.php","comm/test.php"]  
而後到在終端,一樣仍是在項目目錄下,執行:

[plain] view plain copy

 在CODE上查看代碼片派生到個人代碼片

  1. composer dump-autoload  
完成上面2步,咱們就能夠在index.php中,調用test()函數了。

 

 

下面,咱們來看一下類是如何自動加載的?

咱們新建一個Class目錄,裏面新建一個User.php:

[php] view plain copy

 在CODE上查看代碼片派生到個人代碼片

  1. <?php  
  2. class User{  
  3.       
  4. }  
而後修改composer.json文件:

 

 

[plain] view plain copy

 在CODE上查看代碼片派生到個人代碼片

  1. {  
  2.     "autoload": {  
  3.         "files": ["comm/functions.php","comm/test.php"],  
  4.         "classmap": ["Class/"]  
  5.     }  
  6. }  
完成上面操做,一樣是須要在終端下執行:composer dump-autoload

最後,咱們在index.php中測試:

 

 

[php] view plain copy

 在CODE上查看代碼片派生到個人代碼片

  1. $user = new User();  
  2. var_dump($user);  
成功打印:object(User)#3 (0) { }

 

說明類的自動加載也是沒有問題的。

相關文章
相關標籤/搜索