php __autoload失效是因為spl_autoload_register函數會將Zend Engine中的__autoload函數取代為spl_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函數沒有被執行,官網的解析是:如果在你的程式中已經實作了__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影片教學》
以上是php __autoload 失效怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!