1

これは間違いなく非常にばかげた質問です。クラスを理解して変数を割り当てようとしています。変数値として文字列を使用すると正常に動作しますが、次を使用すると:

class MyTest{
    private $my_date = date("Y-m-d H:i:s");
}

$my_test = new MyTest;
echo $my_test->$my_date;

次に、サーバーエラーが発生しますが、何が問題なのかを示すログは出力されません.dreamviewerもエラーとして表示されますが、クラスの外にロードすると問題ありません。

笑わないでください、私は何が間違っていますか?

私がこれをしたら

class MyTest{
    private $my_date = "today";
}

$my_test = new MyTest;
echo $my_test->$my_date;

その後、エラーは発生しません。

4

2 に答える 2

4

クラス変数を宣言するときに関数を呼び出すことはできません。クラス コンストラクター内で値を設定する必要があります。このような:

class MyTest{
    private $my_date;

    public function __construct() {
        $this->my_date = date("Y-m-d H:i:s");
    }
}

ここを参照してください: http://www.php.net/manual/en/language.oop5.properties.php

クラスメンバー宣言には「初期化を含めることができますが、この初期化は定数値でなければなりません。つまり、コンパイル時に評価できなければならず、評価するために実行時の情報に依存してはなりません。」

于 2013-08-16T01:23:18.283 に答える
2

あなたのように宣言中に関数を呼び出すことはできません。次のようにします。

class MyTest{
    public $my_date;

    function __construct() {
        $this->my_date = date("Y-m-d H:i:s");
    }
}

$my_test = new MyTest;
echo $my_test->my_date;

これとは別に、クラスの外から変数を呼び出したい場合は、変数を public にする必要があります。変数の呼び出しは、-> の後に $ なしで行われます。

于 2013-08-16T01:31:26.603 に答える