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