一、使用命令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();
?>
|