我有以下的困境:PHP __autoload不輸出緩衝處理函數內工作
ob_start('processBuffer');
function processBuffer($buffer){
$betterBuffer = SomeClass::doSomething($buffer);
return $betterBuffer;
}
function __autoload($className){
if($className == 'SomeClass'){ include_once 'some_class.php'; }
}
如果類SomeClass的,必須內processBuffer加載的第一次,這是行不通的,但如果它的工作必須在processBuffer函數執行之前加載。這是爲什麼?目前,爲了解決這個問題,我必須做到以下幾點:
__autoload('SomeClass');
ob_start('processBuffer');
我該如何解決這個問題?
你不需要直接調用'__autoload()'函數;簡單地定義它應該足以讓PHP調用它。但是,PHP建議不要再使用'__autoload';相反,你應該編寫函數並將它們傳遞給'spl_autoload_register()'。這對於很多方面來說都更好,包括允許你擁有多個自動加載函數,這是舊的'__autoload()'機制所無法實現的。 – Spudley
值得一提的是,一旦_anything_調用'spl_autoload_register()''-_autoload()'被完全禁用。 – KingCrunch