ホームページ  >  記事  >  バックエンド開発  >  php __autoloadが失敗した場合の対処方法

php __autoloadが失敗した場合の対処方法

藏色散人
藏色散人オリジナル
2021-09-14 10:43:192420ブラウズ

php spl_autoload_register 関数が Zend Engine の __autoload 関数を spl_autoload に置き換えるため、__autoload が失敗します。解決策は、__autoload 関数を再登録することです。

php __autoloadが失敗した場合の対処方法

この記事の動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

こんな場合はどうすればよいですかphp __autoload が失敗しますか?

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

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 関数が実行されていないことがわかります。公式 Web サイトの分析は次のとおりです。プログラムに実装する場合は、明示的に __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 ビデオ チュートリアル "

以上がphp __autoloadが失敗した場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。