首页/PHP/PHP__autoload()自动加载类的实例用法及原理

PHP__autoload()自动加载类的实例用法及原理

在PHP5之前,没有__autoload()方法时,如果有多个类文件,那么必须进行多次include或require,那么随着类文件的增多,该种方法已经不适合,故此在PHP5版本中新增了__autoload()方法。 void __autoload ( string $class ) 尝试加载未定义的类 在教程开始前,假设存在class.person.php文件,并且与当前教程代码页面,在同一目录。

<?php
	class person{
		public $name;
		public $age;

		public function __construct($name="",$age=""){
			$this->name = $name;
			$this->age = $age;
		}
	}
?>
如下为PHP5之前的写法,如果有多个类文件的话,那么加载起来很麻烦。

<?php
	require "class.person.php";
	$person1 = new person("mido",30);
	$person2 = new person("tissot",32);
	echo $person1->name;
	echo $person2->name;
?>
PHP5之后,有了__autoload()方法,以上的代码就可以这样用了。

<?php
function __autoload($classname){
	$classpath = "./".$classname.".class.php";
	if(file_exists($classpath)){
		require_once ($classpath);
	}else{
		echo $classpath."没有找到";
	}
}

$person1 = new person("mido",30);
$person2 = new person("tissot",32);
	echo $person1->name;
	echo $person2->name;
?>
注意: 1、$classname为类文件的前缀名,当前类文件的path为person.class.php,故$classname对应person 2、需要主题$classname与实际传入person,大小写关系,大小写不对,同样加载不到。 3、在CLI模式下运行PHP脚本的话这个方法无效; 4、如果你的类名称和用户的输入有关——或者依赖于用户的输入,一定要注意检查输入的文件名,例如:.././这样的文件名是非常危险的。
收藏:

相关资讯