私はこれであまり良くはありません。だから、これは愚かな質問です。変数変数を使用して静的変数にデータを挿入するときのエラー
私はクラスを持っている:
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致命的なエラー:[]の行に/var/www/lib/lib.phpに1248
を読み取ることが指す使用できません上記のデバッグクラスの行。
EDIT:
私は何をしようとしていることにデータを追加するために、静的などの配列を決定するために、変数の変数(したがって、投稿タイトル)を使用しています。
I.e. $ type == 'messages'ならば$$ type == $ messagesです。
は、だから私は自分が欲しい:: $$タイプ[] ==自己:: $メッセージ[]
場合や、$タイプ== 'エラー'、その後、$$タイプ== $エラーと自己:: $$ type [] == self :: $ errors []
を試してみてください。 –
あなたの場合、$ typesは配列です。インデックス$ types []は設定されていませんが、それを変数として使用しようとしています。もちろんそれは間違っています。達成しようとしていることを説明できますか? – shawndreck
@tpaksu、良い点ですが、私のif(!in_array(...))がその問題を処理する必要があります。 –