1. 程式人生 > >php自動載入類的方法

php自動載入類的方法

php自動載入類的方法

廢棄的函式:__autoload():

test.class.php:

<?php
class test{
	public function index(){
		return "index";
	}
}
?>

 demo.php例項化這個類:

<?php
function __autoload($class){
	require $class.'.class.php';
}
$a = new test();
echo $a->index();  //index
?>

原理就是每當例項化一個類是php檔案會自動查詢呼叫__autoload()方法,這個方法在高版本php中已被廢棄

spl_autoload_register()函式:

第一種傳值方式:

demo.php:

<?php
spl_autoload_register('auto');  //傳入函式名
$a = new test();
echo $a->index();
function auto($class){
	require $class.'.class.php';
}
?>

當例項化一個類時會自動呼叫spl_autoload_register()函式,此函式根據傳入的函式規則進行查詢類檔案,支援陣列形式傳值

第二種傳值方式:(陣列形式,數組裡是類名和靜態方法)

<?php
class load{
	public static function auto($class){    //必須是靜態方法
		require $class.'.class.php';
	}
}
spl_autoload_register(array('load','auto'));  //類名,方法
$a = new test();
echo $a->index();     //index
?>

第三種傳值方式(匿名函式)

demo.php:

<?php
spl_autoload_register(function ($class){
		require $class.'.class.php';
	});
$a = new test();
echo $a->index();  //index
?>

PS:spl_autoload_register()函式有三個引數,第一個就是要註冊的函式,第二個當無法註冊時是否丟擲異常true,第三個如果是true這個函式會新增到佇列之首