php 类加载其它类,php中自定义类文件自动加载

在php中,我们常常会引用很多类文件,如何实现多文件目录中,加载不同的文件呢?

php提供了几种自动加载函数

假定类文件是当前目录下的lib/User.class.php

1,自动加载函数:__autoload()

function __autoload($class){

include 'lib/'.$class.'.class.php';

}

$User=new User();

解释:当实例化一个对象时,会在本页面查找有没有匹配的类,如果没有,会自动执行__autoload()方法,同时会把类的名称传给__autoload()这个方法,这样就可以引入与之匹配的类文件了(前提是类文件存在这个目录中)

2,自定义函数来加载类文件

通过函数spl_autoload_register()来实现

function A($class){

include 'lib/'.$class.'.class.php';

}

spl_autoload_register('A');

$User= new User();

解释:与上一个相同,也是先查找当前文件有没有匹配的类,然后再去执行自定义加载的函数,不同的是,如果与__autoload()同时存在的话,__autoload()不会被执行

3,自定义对象加载类文件

也是通过spl_autoload_register(array('对象','方法名称'))来实现

class A{

public function Aauto($class){

include 'lib/'.$class.'.class.php';

}

}

$A=new A();

sql_autoload_register(array($A,'Aauto'));

$User= new User();

与自定义函数来加载类文件是一样的,需要注意的是,顺序不要搞错了

4,指定静态方法加载类文件

spl_autoload_register(array('类名','静态方法名称'))来实现(两种写法)

第一种:

class A{

public function Aauto($class){

include 'lib/'.$class.'.class.php';

}

}

sql_autoload_register(array('A','Aauto'));

$User= new User();

第二种:

class A{

public function Aauto($class){

include 'lib/'.$class.'.class.php';

}

}

sql_autoload_register(array('A::Aauto'));

$User= new User();

以上方法都是个人总结,如有错误,希望告知,本人及时修改,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值