首頁  >  文章  >  後端開發  >  PHP函數__autoload失效原因(與smarty有關)

PHP函數__autoload失效原因(與smarty有關)

WBOY
WBOY原創
2016-07-29 09:16:121054瀏覽

PHP函數__autoload可以實現簡單的自動加載,但是在引入了smarty後發現__autoload函數已失效,後來發現是spl_autoload_register函數的原因。

執行以下程式碼:

function __autoload($name)
{
	require 'class/'.$name.'.php';
	echo '1';
}
function autoload_test($name)
{
	echo '2';
}
spl_autoload_register('autoload_test');
$ca=new Ca();

結果輸出2,可以看到__autoload函數沒有被執行,官網的解析是:如果在你的程式中已經實現了__autoload()函數,它必須明確註冊到__autoload()佇列中。因為 spl_autoload_register()函數會將Zend Engine中的__autoload()函數取代為spl_autoload()或spl_autoload_call()。

為了讓程式碼正常運作,應該重新註冊__autoload函數:

function __autoload($name)
{
	require 'class/'.$name.'.php';
	echo '1';
}
function autoload_test($name)
{
	echo '2';
}
spl_autoload_register('autoload_test');
spl_autoload_register('__autoload');
$ca=new Ca();

版權聲明:本文為博主原創文章,未經博主允許不得轉載。

以上就介紹了PHP函數__autoload失效原因(與smarty有關),包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn