1

関数が PHP の同じクラス内から呼び出されたかどうかを識別する方法はありますか? debug_backtraceのようなものを使用する以外に?

アップデート:

これは私が現在やっていることです:

class Alex {
  function __construct()
  {
     $this->internal = false;
  }

  function a()
  {
    $this->internal = true;
    $this->b();
  }

  function b()
  {
    if($this->internal) 
      // ...
    else
      // ...
  }
}
4

3 に答える 3

2

なぜそれをしたいのかわかりません。この種の要件は疑わしく、通常は正当な理由があります。

つまり、呼び出し元が内部か外部かを示す追加パラメーターを使用して関数のprotectedクローンを作成し、バージョンを実装に任せることができます。publicpublicprotected

class Before
{
    public foo() { /* code here */ }
}

class After
{
    public foo() { $this->fooCore(false); }
    protected fooCore($calledFromInside = true) { /* code here */ }

    // At this point you should make sure that you never call $this->foo()
    // directly from inside class After
}
于 2013-03-07T15:46:22.433 に答える
0

私が知っているわけではありません。クラス内から呼び出されたときに値を渡すオプションのパラメーターを追加することで、同様の問題を解決しました。

HTH :)

于 2013-03-07T15:47:10.360 に答える
-1

たとえば、NetBeansでのデバッグと同じように、NetBeansでPHPをデバッグすることができます。また、 WebgrindやXdebugなどの便利なPHPツールを見つけることができます。

于 2013-03-07T15:45:31.010 に答える