我不是很擅長這個,所以我確信這是一個愚蠢的問題。PHP使用變量變量將數據插入靜態變量時出錯
我有一個類:
class debug {
private static $messages = array();
private static $errors = array();
private static $all = array(); // includes both of above
private static $types = array('messages','errors');
public static function add($type, $message) {
if(!in_array($type,self::$types)) {
self::add('errors','Bad type "' . $type . '" specified when sending this message: ' . $message);
return false;
}
self::$$type[] = $message; // ERROR IS HERE (see below)
self::$all[] = $message; // no error
}
}
我從另一個類,以便調用這個調試(驚喜)。從error.log中
debug::add('error', 'Error in ' . __FILE__ . ' on line ' . __LINE__);
PHP錯誤消息:
PHP致命錯誤:無法使用[]爲上線1248
它指的是讀入/var/www/lib/lib.php調試類中的上述指定行。
編輯:
我所試圖做的是使用一個變量變量(因此發佈標題),以確定哪些靜態數組將數據添加到。
I.e.如果$ type =='messages',那麼$$ type == $ messages。
所以我想自己:: $$型[] ==自:: $信息[]
或者,如果$類型== '錯誤',那麼$$類型== $錯誤和自我:: $$ type [] == self :: $ errors []
你有錯誤的數組,但你將它添加到錯誤數組。 – 2012-04-25 00:18:58
在你的情況下,$ types是一個數組,索引$ types []沒有被設置,但你正在嘗試使用它作爲一個變量。當然這是錯誤的。你能解釋你打算實現什麼嗎? – shawndreck 2012-04-25 00:21:01
@tpaksu,好點,但你看我的if(!in_array(...))應該照顧這個問題。 – 2012-04-25 00:50:43