但是__autoload()方法出来了,以后就不必为此大伤脑筋了,这个类会在你实例化对象之前自动加载制定的文件。
下边我们通过一个例子来看一下,具体的使用方法,并在稍后说明使用PHP魔术函数__autoload应该注意些什么。
| 代码如下 | 复制代码 |
|
//定义一个类ClassA,文件名为ClassA.php
//定义一个类ClassB,文件名为ClassB.php,ClassB继承ClassA | |
定义两个测试用的类之后,我们来编写一个含有__autoload()方法的PHP运行程序文件如下:
| 代码如下 | 复制代码 |
|
function __autoload($classname){ | |
这个文件的运行是一点问题都没有的,可见autoload是多么的好用啊,呵呵……
但是不得不提醒你一下几个方面是必须要注意的。
1、如果类存在继承关系(例如:ClassB extends ClassA),并且ClassA不在ClassB所在目录
利用__autoload魔术函数实例化ClassB的时候就会受到一个致命错误:
| 代码如下 | 复制代码 |
| Fatal error: Class ‘Classd’ not found in ……ClassB.php on line 2, | |
解决方法:把所有存在extends关系的类放在同一个文件目录下,或者在实例化一个继承类的时候在文件中手工包含被继承的类;
2、另外一个需要注意的是,类名和类的文件名必须一致,才能更方便的使用魔术函数__autoload;
其他需要注意的事情:
3、在CLI模式下运行PHP脚本的话这个方法无效;
4、如果你的类名称和用户的输入有关——或者依赖于用户的输入,一定要注意检查输入的文件名,例如:.././这样的文件名是非常危险的。
本文详细介绍了PHP中的自动加载类的魔术函数__autoload()的使用方法,包括其优点、具体实现代码示例以及使用时需要注意的事项。特别强调了类名与文件名的一致性、类继承关系的处理、CLI模式下的限制以及用户输入相关类名的安全性。
1033

被折叠的 条评论
为什么被折叠?



