php spl_autoload_register 関数が Zend Engine の __autoload 関数を spl_autoload に置き換えるため、__autoload が失敗します。解決策は、__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 サイトの他の関連記事を参照してください。