php中spl_autoload_register函式的用法
spl_autoload_register
(php 5 >= 5.1.2)
spl_autoload_register — 註冊__autoload()函式
說明bool spl_autoload_register ([ callback $autoload_function ] )
將函式註冊到spl __autoload函式棧中。如果該棧中的函式尚未啟用,則啟用它們。
如果在你的程式中已經實現了__autoload函式,它必須顯式註冊到__autoload棧中。因為
spl_autoload_register()函式會將zend engine中的__autoload函式取代為spl_autoload()或
spl_autoload_call()。 引數
autoload_function
欲註冊的自動裝載函式。如果沒有提供任何引數,則自動註冊autoload的預設實現函式
spl_autoload()。
返回值
如果成功則返回 true,失敗則返回 false。
注:spl是standard php library(標準php庫)的縮寫。它是php5引入的乙個擴充套件庫,其主要功能包括autoload機制的實現及包括各種iterator介面或類。 spl autoload機制的實現是通過將函式指標autoload_func指向自己實現的具有自動裝載功能的函式來實現的。spl有兩個不同的函式 spl_autoload, spl_autoload_call,通過將autoload_func指向這兩個不同的函式位址來實現不同的自動載入機制。
範例設我們有乙個類檔案a.php,裡面定義了乙個名字為a的類:
<?
php
class
a
}?>
然後我們有乙個index.php需要用到這個類a,常規的寫法就是
<?
php
require
('a.php'
);
$a
=new
a();
?>
但是有乙個問題就是,假如我們的index.php需要包含的不只是類a,而是需要很多類,這樣子就必須寫很多行require語句,有時候也會讓人覺得不爽。
不過在php5之後的版本,我們就不再需要這樣做了。在php5中,試圖使用尚未定義的類時會自動呼叫__autoload函式,所以我們可以通過編寫__autoload函式來讓php自動載入類,而不必寫乙個長長的包含檔案列表。
例如在上面那個例子中,index.php可以這樣寫:
<?
php
function
__autoload
($class
)
}
$a
=new
a();
?>
當然上面只是最簡單的示範,__autoload只是去include_path尋找類檔案並載入,我們可以根據自己的需要定義__autoload載入類的規則。
此外,假如我們不想自動載入的時候呼叫__autoload,而是呼叫我們自己的函式(或者類方法),我們可以使用spl_autoload_register來註冊我們自己的autoload函式。它的函式原型如下:
bool spl_autoload_register ( [callback $autoload_function] )
我們繼續改寫上面那個例子:
<?
php
function
loader
($class
)
}
spl_autoload_register
('loader'
);
$a
=new
a();
?>
這樣子也是可以正常執行的,這時候php在尋找類的時候就沒有呼叫__autoload而是呼叫我們自己定義的函式loader了。同樣的道理,下面這種寫法也是可以的:
<?
php
class
loader
}
}
spl_autoload_register
(array
('loader'
,'loadclass'
));
$a
=new
a();?>
thinkphp原始碼解讀
thinkphp原始碼解讀 thinkphp原始碼的根目錄下是 index.php,是系統預設的 主頁,index.php中首先檢測的是 php執行環境,如果php版本小於 5.3.0則退出執行,定義是否為除錯模式,定義應用目錄,引入入口檔案。thinkphp是整個框架的入口檔案,在thinkphp...
Cartographer原始碼篇 原始碼分析 1
在安裝編譯cartographer 1.0.0的時候,我們可以看到 主要包括cartorgarpher ros cartographer ceres sover三個部分。其中,ceres solver用於非線性優化,求解最小二乘問題 cartographer ros為ros平台的封裝,獲取感測器資料...
ThinkPHP核心類原始碼剖析
分析thinkphp原始碼中的設計模式。估計會有點讓你費解 至於第二部分的內容。我還是先寫成文章吧。1,對action類的分析 1 indexaction,otheraction表示使用者自己建立的一系列控制器,這些控制器都會繼承於action類。2 action,控制基類。他的檔案位址位於 thi...