composer的autoload來自動加載本身編寫的函數庫與類庫?

一、使用命令composer init生成composer.json文件,並編輯autoload選項內容以下:php

其中又包含主要的兩個選項: files 和 psr-4。json

files就是須要composer自動幫咱們加載的函數庫(不含類),只要在後面的數組中將函數庫的文件路徑寫入便可。
psr-4顧名思義,是一個基於psr-4(http://www.php-fig.org/psr/psr-4/)規則的類庫自動加載對應關係,只要在其後的對象中,以 "命名空間": "路徑" 的方式寫入本身的類庫信息便可。
修改完成後,只要執行一下composer update,便可完成對應工做。數組

注意:每次更新完composer.json後,必須執行composer update後纔會生效。composer

 

複製代碼
{
    "name": "sui/test",
    "description": "test",
    "type": "project",
    "require": {
        "php": ">=5.3.10"
    },
    "autoload": {
    	"files":[],
	"psr-4":{
	   "Test\\" :"core/"
	}
    }
}
複製代碼

咱們來深挖一下,探索一下autoload的原理。
在咱們修改完composer.json並執行update後,將會修改./vender/composer/autoload_psr4.php,好比個人某個項目,其中增長了這樣一個對應關係:函數

1
2
3
4
5
6
7
8
9
10
<?php
 
// autoload_psr4.php @generated by Composer
 
$vendorDir  = dirname(dirname( __FILE__ ));
$baseDir  = dirname( $vendorDir );
 
return  array (
     'Test\\'  =>  array ( $baseDir  '/core' ),
);

二、自動加載測試測試

例如咱們在composer.json同一目錄下創建文件夾core,並編寫ClassTest類:ui

複製代碼
1 <?php
2 namespace Test;
3 class ClassTest{
4     public function getName(){
5         return "test";
6     }
7 }
8 ?>
複製代碼

編寫test.php,並運行test.php,能夠看到界面上打印出了「test」內容:spa

1
2
3
4
5
<?php
require_once  __DIR__. '/vendor/autoload.php' ;
$obj  new  \Test\ClassTest(); //實例化類
echo  $obj ->getName();
?>
相關文章
相關標籤/搜索