composer的autoload来自动加载自己编写的函数库与类库?
Posted boundless-sky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了composer的autoload来自动加载自己编写的函数库与类库?相关的知识,希望对你有一定的参考价值。
1、使用命令composer init生成composer.json文件,并编辑autoload选项内容如下:
其中又包含主要的两个选项: files 和 psr-4。
files就是需要composer自动帮我们加载的函数库(不含类),只要在后面的数组中将函数库的文件路径写入即可。
psr-4顾名思义,是一个基于psr-4(http://www.php-fig.org/psr/psr-4/)规则的类库自动加载对应关系,只要在其后的对象中,以 "命名空间": "路径"
的方式写入自己的类库信息即可。
修改完成后,只要执行一下composer update
,即可完成对应工作。
注意:每次更新完composer.json后,必须执行composer update后才会生效。
"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‘ ), ); |
2、自动加载测试
例如我们在composer.json同一目录下建立文件夹core,并编写ClassTest类:
1 <?php 2 namespace Test; 3 class ClassTest 4 public function getName() 5 return "test"; 6 7 8 ?>
编写test.php,并运行test.php,可以看到界面上打印出了“test”内容:
1
2
3
4
5
|
<?php require_once __DIR__. ‘/vendor/autoload.php‘ ; $obj = new \Test\ClassTest(); //实例化类 echo $obj ->getName(); ?> |
以上是关于composer的autoload来自动加载自己编写的函数库与类库?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Composer 和 autoload.php 在 PHPUnit 中自动加载类
composer自动加载一个文件后必须执行命令composer dump-autoload