本节介绍利用composer加载框架内自定义的类文件。
这里介绍2中方式。
1.PSR4 - 利用命名空间自动加载
我们在D:\WAMP\wamp\www\framework\创建extend文件夹,该文件夹下的所有类都定义了统一的命名空间:MyExtend,在extend文件夹下创建MyEmail.php,内容:
<?php
namespace MyExtend;
class MyEmail {
public static function test() {
echo 'extend MyEmail';
}
}
由于MyEmail类定义了命名空间,符合psr-4,我们在D:\WAMP\wamp\www\framework\composer.json,配置psr-4规则:
{
"require":{
"twig/twig": "2.4.4",
"slim/slim": "3.9.0",
"illuminate/database": "*",
"predis/predis": "*"
},
"autoload":{
"psr-4":{
"MyExtend\\": "extend/"
}
}
}
需要在命令行执行composer update更新配置文件。
测试:修改D:\WAMP\wamp\www\framework\app\index\controller\index.php文件,添加测试路由方法:
public function testAutoloadPsr4() {
$email = new \MyExtend\MyEmail;
$email->test();
}
浏览器访问http://127.0.0.1/framework/index/index/testAutoloadPsr4,输出extend MyEmail
2.指定文件路径加载
该方法适合没有定义命名空间的不规则类,指定加载文件路径下类,缺点是框架启动时就全部加载了,而不是懒加载的方式。在D:\WAMP\wamp\www\framework\创建other文件夹,在other文件夹下创建Email.php,内容:
<?php
class Email {
public function test() {
echo 'other Email';
}
}
修改D:\WAMP\wamp\www\framework\composer.json,配置路径加载规则:
{
"require":{
"twig/twig": "2.4.4",
"slim/slim": "3.9.0",
"illuminate/database": "*",
"predis/predis": "*"
},
"autoload":{
"psr-4":{
"MyExtend\\": "extend/"
},
"classmap":[
"other/"
]
}
}
需要在命令行执行composer update更新配置文件。
测试:修改D:\WAMP\wamp\www\framework\app\index\controller\index.php文件,添加测试路由方法:
public function testAutoloadClassmap() {
$email = new \Email;
$email->test();
}
浏览器访问http://127.0.0.1/framework/index/index/testAutoloadClassmap,输出other Email