【php】spl_autoload_register自动加载类

 在面向对象开发时,一般习惯为每个类创建一个php文件,为了避免每次引用都要include一堆文件,可以使用spl_autoload_register函数。

我在同一个文件夹下创建Ming.php,Vehicle.php,Car.php,Bick.php四个文件,实现一个简陋的工厂模式,文件内容如下:

Vehicle.php

interface Vehicle{
	function run();
}

Car.php

class Car implements Vehicle{
	public function run(){
		echo '汽车每小时90km';
	}
}

Bike.php

class Bike implements Vehicle{
	public function run(){
		echo '自行车每小时15km';
	}
}

Ming.php

spl_autoload_register(function($name){

	require_once $name.'.php';
});

class Ming{

	public function gotowork($way){
		switch ($way){
			case 'Car':
				return new Car;
			default:
				return new Bike;
		}
	}
}

(new Ming)->gotowork('Car')->run();

输出:

在Ming.php中使用到Car,在Car.php中并没有include Vehicle.php,但是spl_autoload_register自动加载了Car的依赖Vehicle.php。

官方已使用spl_autoload_register代替__autoload,__autoload已在php7.2被废弃,在8.0被移除

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值