PHP

我可以在PHP中使用多个类来扩展一个类吗?

发布于 2021-02-02 12:05:33

如果我有几个具有所需功能的类,但想单独存储以进行组织,我可以扩展一个类以同时拥有这两个类吗?

class a extends b extends c

编辑:我知道如何一次扩展一个类,但是我正在寻找一种使用多个基类立即扩展一个类的方法-
AFAIK,您不能在PHP中做到这一点,但是应该有一些解决方法,而不必诉诸于class c extends bclass b extends a

关注者
0
被浏览
88
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    回答您的编辑:

    如果您确实想伪造多重继承,则可以使用魔术函数__call()。

    尽管从A类用户的角度来看,这很丑陋:

    class B {
        public function method_from_b($s) {
            echo $s;
        }
    }
    
    class C {
        public function method_from_c($s) {
            echo $s;
        }
    }
    
    class A extends B
    {
      private $c;
    
      public function __construct()
      {
        $this->c = new C;
      }
    
      // fake "extends C" using magic function
      public function __call($method, $args)
      {
        $this->c->$method($args[0]);
      }
    }
    
    
    $a = new A;
    $a->method_from_b("abc");
    $a->method_from_c("def");
    

    打印“ abcdef”



推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看