0

次のコードを自分の顔に吹き飛ばさないようにするにはどうすればよいですか?

<?php 

    class abc{
    }
    abc::$someDynamicVariable
?>

事前に変数を宣言したくないので、__construct関数(javascript関数のarguments配列の誰か?)で宣言できることを望んでいました。

私が得るエラーは次のとおりです。

致命的なエラー:宣言されていない静的プロパティへのアクセス:abc :: $ someDynamicVariable in

4

2 に答える 2

1

すぐに値を与える必要はありません。

class abc{
    public static $theVariable;

    // only give it a value when initialized 
    public function __construct() {
       $this->theVariable = "someValue"
    }
}
abc::$someDynamicVariable

または、別のクラスで拡張できます

class abc{
    public static $theVariable;
}

拡張する

class cab extends abc {
   public function __construct() {
       $this->theVariable = "someValue"
   }
}
于 2012-07-11T21:26:53.843 に答える
1

PHPのマジックメソッド __set()を使用__get()して、これまで存在しなかったプロパティを動的に設定/取得できます。

次に例を示します。

class Foo {
    private $data = array();

    public function __set($key, $value) {
        $this->data[$key] = $value;
    }

    public function __get($key) {
        return $this->data[$key];
    }
}

$foo = new Foo();
$foo->something = "bla"; // using magic __set()

echo $foo->something; // using magic __get()
于 2012-07-11T21:27:45.187 に答える