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();
?>
相关文章
相关标签/搜索