関数内から関数が呼び出されるスコープを決定する方法はありますか? (または方法;私はポストの残りの部分のいずれかを意味する関数を使用します。)PHPの呼び出しスコープを決定する
私は何を望んでいないことは、関数に__FILE__
または__CLASS__
定数を渡すことです。この情報はスタックトレースなどで利用できるので、どこかに浮かんでいることはわかっていますが、実行時に例外をスローせずにイントロスペクションする方法を知りたいと思います。
ソリューションのパフォーマンスの特殊性がある場合は、私は同様にそれらについて知りたいのです。
私が興味2ユースケースがあります。
- ファイル/行/関数は、関数呼び出し
を発したクラス型を決定し
class util
{
public static function checkScope()
{
echo $magic_scope_stuff;
}
public static function blah()
{
util::checkScope();
}
}
util::checkScope(); // main, line 14
util::blah(); // class util, line 9
[別のクラスのメソッドと呼ばれているクラスを見つける。]の可能複製(http://stackoverflow.com/questions/1214043/find-out-which-class-called-a-method-in-another-クラス) – Gordon
この質問は、今は毎回尋ねられ、そのためにいくつか重複があるはずです。もしそれを必死にしたいのであれば、 'debug_backtrace'を乱用しますが、一般的に、その必要性を持つことはデザインの匂いです。 http://marc.info/?l=php-internals&m=125313473914294&w=3 – Gordon
@Gordon読み物をありがとう:PHPに、このような機能を実装するには、同様php.internalsに議論され、拒否されました。 – cbednarski