4

なぜPHPでこれを行うことができないのですか? はシングルトン クラスで、 getInstance Database() は PDO オブジェクトを返します。

<?php

class AnExample
{
    protected static $db = Database::getInstance();

    public static function doSomeQuery()
    {
        $stmt = static::$db->query("SELECT * FROM blah");
        return $stmt->fetch();
    }
}

他の PHP 静的変数と同様に、静的プロパティはリテラルまたは定数を使用してのみ初期化できます。式は使用できません。したがって、静的プロパティを整数または配列 (たとえば) に初期化することはできますが、別の変数、関数の戻り値、またはオブジェクトに初期化することはできません。

http://php.net/manual/en/language.oop5.static.php

どうして?!

4

3 に答える 3

0

定義により、静的変数はコンパイル時に影響を受けるため、コードを実行して静的変数の値を生成することはできません。以下を参照してください。

変数のランタイム値の取得、または関数の呼び出し (ランタイムも) は、静的変数に影響を与えることができないため、コンパイル時に実行できません。

于 2013-02-02T18:57:16.937 に答える