PHP関数__autoloadが失敗する理由(smarty関連)

WBOY
リリース: 2016-07-29 09:16:12
オリジナル
1053 人が閲覧しました

PHPの関数__autoloadで簡単な自動ロードが実現できますが、spl_autoload_register関数が原因であることがsmarty導入後に判明しました。

次のコードを実行します:

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 関数が実行されていないことがわかります。公式 Web サイトの分析は次のとおりです。 __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 チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!