【问题标题】:Calling extended class function from parent class从父类调用扩展类函数
【发布时间】:2012-02-11 23:41:23
【问题描述】:

我是 OO PHP 新手。有一些问题。

class a {
   protected function a1() {
      ...
   }
}

class b extends a {
   public function b1() {
      ...
   }
}

假设我们有 2 个如上所述的类。我正在调用 b 的方法,如下例所示

class a {
   var $b;
   function __construct()
   {
      $b = new b();
   }
   protected function a1() {
      $b->b1();    
    }
}

class b extends a {
   public function b1() {
      ...
   }
}

我知道,可以从扩展类中调用父类的方法,但是我想知道是否可以使用反向方法?我的意思是,从父类内部调用扩展类方法(在这种情况下,从class a 调用class b 的方法)而不在__contruct 中声明,只需$this->b();?

【问题讨论】:

    标签: php oop class function


    【解决方案1】:

    是的,你可以调用扩展类中的方法。

    <?php
    class a 
    {
        public function a1 ()
        {
            $this->b1();    
        }
    
        protected function b1()
        {
            echo 'This is in the a class<br />';
        }
    }
    
    class b extends a 
    {
        protected function b1()
        {
            echo 'This is in the b class<br />';
        }
    }
    
    class c extends a
    {
        protected function b1()
        {
            echo 'This is in the c class<br />';
        }
    }
    
    $a = new a();
    $a->a1();
    
    $b = new b();
    $b->a1();
    
    $c = new c();
    $c->a1();   
    ?>
    

    这将导致:

    这是在一个类中
    这是b类
    这是在 c 类中

    您可能也对抽象类感兴趣http://us3.php.net/manual/en/language.oop5.abstract.php

    【讨论】:

      【解决方案2】:

      使用 PHP __call__callStatic 的 Magic 方法

      Reference

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-10
        • 1970-01-01
        • 1970-01-01
        • 2021-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多