0

この2つのクラスを持つ:

class run {
   public static $where = "there";
}

class there {
   public static $place_name = "A beautiful place..";
}

place_nameを取得するには、次のようにします。

$place = "there";
echo $place::$place_name;

しかし、私はいつかこのようなことをしたいと思うかもしれません..:

echo {$run::$where}::$place_name;

明らかに、最後のスニペットは機能しません。それを機能させる方法はありますか?

4

1 に答える 1

0

(コメントで言ったように)変数を使用したくない場合は、よく考えてください。変数はPHPでクールで、非常に高速で、限られたパーサーを回避するために必要な接着剤だけです(これにより、PHPは非常に高速になると言われています)。では、ここで変数を使用してみませんか?入力が簡単で、すばやく実行できます。

変数が不要で、PHPの構文が制限されていることがすでにわかっている場合は、少なくともPHP 5.4以降でワンライナーを記述して、探しているものを実現できます。

echo (new ReflectionClass((new ReflectionClass($run))->getStaticPropertyValue('where')))->getStaticPropertyValue('place_name');

これにより、変数の使用がより快適であることが最終的に明らかになるはずです。

echo (unset) $place = $run::$where, $place::$place_name;

デモ:http ://eval.in/13942

于 2013-03-30T11:14:27.090 に答える