嘿PHP大師。我遇到了一些奇怪的類問題,這些問題顯然與php中的一些怪癖有關。誰能告訴我什麼出的最普通的情況下,可能會提供以下錯誤......PHP5類範圍怪癖
致命錯誤:當無級範圍是活躍在MyClass.php第5行無法訪問自己::
現在,很明顯,如果我在課堂外使用self ::,我會得到錯誤...但我不是。這裏是一個簡化版本的情況...
//file1
class MyClass{
public static function search($args=array()){
$results = MyDbObject::getQueryResults("some query");
$ordered_results = self::stack($results); //Error occurs here
return $ordered_results;
}
public static function stack($args){
//Sort the results
return $ordered_results;
}
}
//file 2
include_once("MyClass.php");
$args = array('search_term'=>"Jimmy Hoffa");
$results = MyClass::search($args);
給出這個設置我怎麼能得到上面的錯誤?這是我迄今爲止發現的...
MyClass::search($args) //does not give the error (usually)
call_user_func("MyClass::search"); // this gives the error!
任何其他情況?
彈出問題的另一種情況是當您在類函數中有函數時。但我不明白爲什麼這應該是一個問題,因爲內部功能仍然應該在班級的範圍內,對嗎?顯然內函數不能在封閉函數之外訪問。但是,你似乎應該能夠在內部函數中使用self。 – Brooks 2010-10-22 16:55:58
如果將「self ::」更改爲「MyClass ::」,會發生什麼情況? – thetaiko 2010-10-22 16:59:56
然後它可以正常工作,但代碼的可重用性大大降低 – Brooks 2010-10-22 17:01:01