利用composer搭建PHP框架(五.自动加载)

本节介绍利用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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值