PHP spl_autoload_register實現(xiàn)自動加載研究
更新時間:2011年12月06日 01:18:41 作者:
spl_autoload_register()函數(shù)應該是主流框架使用最多的也是非常核心的函數(shù)之一,可實現(xiàn)自動注冊函數(shù)和類,實現(xiàn)類似__autoload() 函數(shù)功能,簡化了類的調(diào)用與加載,提高了工作的效率
這里通過一個實驗談談這個函數(shù)的部分特征。
函數(shù)原型
bool spl_autoload_register ([ callback $autoload_function [, bool $throw = true [, bool $prepend = false ]]] )
版本兼容
PHP 5 >= 5.1.2
實驗過程
第一步,使用spl_autoload_register()函數(shù)注冊load()方法
<?php
function load(){
require_once 'lib.php';
}
spl_autoload_register('load');
?>
其中l(wèi)ib.php文件代碼如下
<?php
class className{
function method(){
echo 'a method in class';
}
}
function onlyMethod(){
echo 'method only';
}
?>
說明:lib.php文件為一個className類和一個onlyMethod函數(shù)
第二步,調(diào)用自動加載類
$class = new className();
$class->method();
onlyMethod();
輸出:
a method in class
method only
說明:實例化className類,并調(diào)用類method()函數(shù),同時調(diào)用onlyMethod()方法,輸出正常,沒有出現(xiàn)錯誤
第三步,直接調(diào)用函數(shù)
onlyMethod();
說明:沒有實例化類,直接調(diào)用lib.php文件中的onlyMethod()函數(shù)
輸出:
Fatal error: Call to undefined function onlyMethod() in '...(省略路徑)'
第四步,實例化className類,再直接調(diào)用
$class = new className();
onlyMethod();
輸出:method only
從上面的四步實驗發(fā)現(xiàn),如果加載的文件包含函數(shù),使用則一定需要實例化里面的類,否則就產(chǎn)生異常情況 Call to undefined function錯誤,具體在使用中要注意一下。
函數(shù)原型
bool spl_autoload_register ([ callback $autoload_function [, bool $throw = true [, bool $prepend = false ]]] )
版本兼容
PHP 5 >= 5.1.2
實驗過程
第一步,使用spl_autoload_register()函數(shù)注冊load()方法
復制代碼 代碼如下:
<?php
function load(){
require_once 'lib.php';
}
spl_autoload_register('load');
?>
其中l(wèi)ib.php文件代碼如下
復制代碼 代碼如下:
<?php
class className{
function method(){
echo 'a method in class';
}
}
function onlyMethod(){
echo 'method only';
}
?>
說明:lib.php文件為一個className類和一個onlyMethod函數(shù)
第二步,調(diào)用自動加載類
復制代碼 代碼如下:
$class = new className();
$class->method();
onlyMethod();
輸出:
a method in class
method only
說明:實例化className類,并調(diào)用類method()函數(shù),同時調(diào)用onlyMethod()方法,輸出正常,沒有出現(xiàn)錯誤
第三步,直接調(diào)用函數(shù)
onlyMethod();
說明:沒有實例化類,直接調(diào)用lib.php文件中的onlyMethod()函數(shù)
輸出:
Fatal error: Call to undefined function onlyMethod() in '...(省略路徑)'
第四步,實例化className類,再直接調(diào)用
$class = new className();
onlyMethod();
輸出:method only
從上面的四步實驗發(fā)現(xiàn),如果加載的文件包含函數(shù),使用則一定需要實例化里面的類,否則就產(chǎn)生異常情況 Call to undefined function錯誤,具體在使用中要注意一下。
相關文章
非集成環(huán)境的php運行環(huán)境(Apache配置、Mysql)搭建安裝圖文教程
這篇文章主要介紹了非集成環(huán)境的php運行環(huán)境(Apache配置、Mysql)搭建安裝圖文教程,感興趣的小伙伴們可以參考一下2016-04-04PHP實現(xiàn)蛇形矩陣,回環(huán)矩陣及數(shù)字螺旋矩陣的方法分析
這篇文章主要介紹了PHP實現(xiàn)蛇形矩陣,回環(huán)矩陣及數(shù)字螺旋矩陣的方法,結(jié)合具體實例形式分析了蛇形矩陣,回環(huán)矩陣及數(shù)字螺旋矩陣的概念、表示方法及php實現(xiàn)技巧,需要的朋友可以參考下2017-05-05php基于dom實現(xiàn)讀取圖書xml格式數(shù)據(jù)的方法
這篇文章主要介紹了php基于dom實現(xiàn)讀取圖書xml格式數(shù)據(jù)的方法,涉及php基于dom針對xml格式文件的讀取操作相關技巧,需要的朋友可以參考下2017-02-02