php中自定义类文件自动加载
程序员文章站
2022-03-21 14:47:30
...
在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();
以上方法都是个人总结,如有错误,希望告知,本人及时修改,谢谢!
推荐阅读
-
什么是php自动加载类
-
PHP中的一个很好用的文件上传类_PHP教程
-
php类的注册与自动加载__autoload
-
php类文件怎么访问别的文件中的变量
-
php基础知识:类与对象(2) 自动加载对象_php技巧
-
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间,_PHP教程
-
php中 __autoload函数 自动加载类文件机制
-
PHP __autoload函数(自动载入类文件)的使用方法
-
植物大战僵尸修改器使用方法 PHP __autoload函数(自动载入类文件)的使用方法
-
php中使用__autoload()自动加载未定义类的实现代码_PHP教程