php自動載入類的方法
阿新 • • 發佈:2018-12-07
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這個函式會新增到佇列之首