我不是很擅长这个,所以我确信这是一个愚蠢的问题。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