4

クラス変数でスコープ解決演算子を使用すると致命的なphpエラーが発生する理由と、それを回避する方法があるかどうかについて知りたいです。

例えば:

<?php
class StaticTest
{
    public static function output()
    {
        echo "Output called<br />";
    }
}
Class Test
{
    public $reference;

    public function __construct()
    {
        $this -> reference = new StaticTest;
    }

}

$static_test = new StaticTest;
$static_test::output(); //works as intended

$test = new Test;
$test -> reference::output(); //Unexpcted T_PAAMAYIM_NEKUDOTAYIM

$direct_reference = $test -> reference;
$direct_reference::output(); //works, closest solution i have found, but requires the extra line of code / variable
?>
4

1 に答える 1

3

コードの行数と追加の変数だけが問題になる場合は、変数を作成せずに1行で実行する方法を次に示します。

call_user_func(array(get_class($test->reference), 'output'));

これは、私が思うに、次のものと同等です。

$direct_reference = $test->reference;
$direct_reference::output();
于 2012-06-30T22:25:16.263 に答える