1、比如要在demo/class下创建一个包,如存放目录为composer_test。
2、在目录中增加一个src目录。
3、在src增加一个类,名字为:SayHello.php,内容为:
<?php
namespace Hello;
class SayHello {
public static function world () {
return 'Hello World!';
}
}
4、在存放主目录compose_test下创建一个测试文件:test.php,内容为:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Hello\SayHello;
echo SayHello::world();
5、提前安装好composer。在composer_test包中执行composer init
按提示输入内容,生成composer.json文件,内容为:
{
'name': 'rainpet/test',
'description': 'ddd',
'type': 'l',
'license': 'mit',
'minimum-stability': 'dev',
'require': {}
}
6、编辑composer.json,添加psr-4加载配置文件:
'autoload': {
'psr-4': {
'Hello\\': 'src/'
}
}
7、在composer_test目录中执行:
composer install,即会自动创建vender目录及包的配置内容,在使用时,即会自动类,完成。
内容其实存储在:
composer_test\vendor\composer\autoload_psr4.php
composer_test\vendor\composer\autoload_static.php
中。
8、如果更改了compoer.json文件,则需要在composer_test文件中执行:
composer update
然后再次执行composer install,方可恢复正常状态。
9、composer.json中psr-4前部分,其实是命名空间namespace,需要在src中,新建类时,需要定义namespace Hello。
10、如果需要增加一个新的命名空间,如Hello1,同时增加一个新的类SayMe,则需要两步:
首先在src中创建文件SayMe.php,内容如下:
<?php
namespace Hello1;
class SayMe {
public static function world () {
return 'Hello Me!';
}
}
然后在composer.json中的psr4中增加对应内容:
'autoload': {
'psr-4': {
'Hello\\': 'src/',
'Hello1\\': 'src/'
}
}
即需要增加一个’Hello1\’: ‘src/’,然后需要在composer_test中执行compoer install
即可在test.php中即可使用正确的类:
使用方法是:
use Hello1\SayMe;
echo SayMe::world();
11、如果想在src中,再次增加一个Say的目录,同时调用时,使用\Hello\Say\SayHe,则可进行如下的调整:
在src下创建目录:Say,此目录中增加SayHe.php文件,内容如下:
<?php
namespace Hello\Say;
class SayHe {
public static function world () {
return 'Hello He!';
}
}
在主测试中,增加内容:
use Hello\Say\SayHe;
echo SayHe::world();
即可正常运行。