当前位置: 首页 > 面试题库 >

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

邹桐
2023-03-14
问题内容

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

class a extends b extends c

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


问题答案:

回答您的编辑:

如果您确实想伪造多重继承,则可以使用魔术函数__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”



 类似资料:
  • 问题内容: 我知道一个类可以实现多个接口,但是可以扩展多个类吗?例如,我希望我的班级同时扩展我创建的类。这在Java中可行吗?这两个语句并收到一个错误。如果不可能,为什么呢?扩展,但我猜它也扩展了,因为它继承了字段,并且可以在需要对象的地方传递。同样,像Java中的所有类一样,它们扩展了类。那么为什么不能扩展一个以上的类呢? TransformGroup继承 那么,如果可能的话,正确的方法是什么?

  • 使用java和testNG,我在两个不同的类test1.class和test2.class中有两个测试,还有一个包含大多数方法的base.class:

  • 问题内容: 我正在学习Java,并且希望将自己的课堂变成可观察的课堂。 但是我已经有了它扩展了另一个类。 我该怎么办? 问题答案: 我建议避免完全使用该类,而应 定义事件特定的侦听器和相应的事件定义 。然后在您的类中定义一个侦听器列表,以及添加和删除侦听器以及向其传播事件的方法(请参见下文)。 强制您使用它来表示事件,然后使用来检查事件类型,这是一种丑陋的非OO方法,并使代码更难以理解。如果查看j

  • Szenario:我有两个扩展,它们用一些特定字段扩展了。在TYPO3 9之前,我必须使用以下打字脚本配置对新闻扩展的依赖关系进行配置: 模型扩展了基本扩展的模型: 在TYPO3 10中,在(中断:#87623): 只要您只有一个扩展新闻扩展名的扩展名,它就可以工作多久。如果您有第二个扩展并启用TYPO3缓存,您将得到一个错误,即在第一个扩展中添加的字段在新闻扩展的模板中不可用。奇怪的是,这个问题

  • 你好,有人知道如何发现扩展< code>ArrayBlockingQueue的类吗?例如,我想监视下面的< code>MyBufferQueue类 在属于java库的< code>ArrayBlockingQueue类中,有这样一个方法: 我遇到的问题是,当我监视类< code>MyBufferQueue时,以及在测试期间访问方法< code > ArrayBlockingQueue . put(