0

メソッドがオブジェクトの外側から呼び出されたのか、内側から呼び出されたのかを判断するにはどうすればよいですか?

例えば:

class Example{


   public function Foo(){
      $this->Bar();      
   }


   public function Bar(){
      if(this_function_was_called_from_outside_the_object){
         echo 'I see you\'re an outsider!' // this method was invoked from outside the object.
      }else{
         echo 'I\'m talking to myself again.'; // this method was invoked from another method in this object.
      }
   }
}

$oExample = new Example();
$oExample->Foo(); // I\'m talking to myself again.
$oExample->Bar(); // I see you\'re an outsider!
4

3 に答える 3

0

なぜそれが必要なのかわかりませんがprivate function、クラス内から呼び出すことができる排他的な , を持つことを止めるものは何もありません:

class Example {
   public function Foo(){
      // Always make sure to call private PvtBar internally
      $this->PvtBar();  
   }

   private function PvtBar() {
     // this method was invoked from another method in this object.
     echo 'I\'m talking to myself again.';
     // now call common functionality
     RealBar();
   }

   public function Bar() {
     // this method was invoked from outside the object.
     echo 'I see you\'re an outsider!';
     // now call common functionality
     RealBar();
   }

   private function RealBar() {
     // put all the code of original Bar function here
   }
}
于 2013-09-06T11:27:29.203 に答える
-1

phpのget_called_class()関数を使う

クラス名を返します。クラス外から呼び出された場合は FALSE を返します。

于 2013-09-06T11:25:02.210 に答える