1

私を助けてください。たとえば、クラスBarから拡張するクラスFooがあります。

    class Bar
    {
          public function __call($func, $args){
               echo "Calling method {$func}";
          }
          public function __callstatic($func, $args){
               echo "Calling static method {$func}";
          }
          public function run(){
               echo "calling Bar::run method \n";
          }
    }
    class Foo extends Bar
    {
          public $objBar;
          public function __construct(){
              $this -> objBar = new Bar();
          }
          public function callViaObject(){
              $this -> objBar -> run();
              $this -> objBar -> run1();
          }
          public function callViaParent(){
              parent::run();
              parent::run1();
          }
    }
    $foo = new foo();
    $foo -> callViaObject(); 
    /* output 
       calling Bar::run method \n
       Calling method run1; */
    $foo -> callViaParent();
    /* output 
       calling Bar::run method \n
       Calling method run1; !! */

ここに問題があります。parent::子クラスからメソッドを呼び出し、親クラスにオブジェクトがある場合、呼び出しメソッドparent::は静的呼び出しではありません。

Barでは、どうすればクラスをチェックインできますか、メソッドはどのように呼び出されますか?コールタイプが親であることを確認できますか::?

どうもありがとうございました!!

4

1 に答える 1

1

private static function run1() {}クラス Aを追加します。

于 2013-03-01T18:53:38.747 に答える