如果我有几个类,它们都有我需要的功能,但我想单独存储以便于组织,那么我可以扩展一个类,使之同时具有这两个功能吗?

class a extends b extends c

编辑:我知道如何一次扩展一个类,但我正在寻找一种使用多个基类立即扩展类的方法——好吧,在PHP中你不能这么做,但应该有办法绕过它,而不必求助于class c extends bclass b extends a

推荐答案

如果你真的想在PHP5.3中伪造多重继承,你可以使用神奇的函数_call().

这很难看,尽管它从A级用户的Angular 来看是可行的:

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"

Php相关问答推荐

如何根据键上的特定标准对对象数组进行排序?

dockerized laravel服务器拒绝POST请求

PHP cUrl扩展与v8.2.12更新损坏

FatFreeFramework上的不同路由

WooCommerce:有条件地更改特定区域的发货类别

如何删除WordPress用户的个人资料描述或其他个人资料字段中的链接?

根据未用于变体的产品属性隐藏WooCommerce发货方式

将一个情态形式放在细丝v3中的形式中间

从目录文件夹中获取文件并追加到 Select 下拉列表(选项)-wordpress/wc

在PHP中使用curl命令执行SCRAPYD操作.json不返回任何内容

如何在PHP中组合日期范围

WooCommerce中基于用户角色的不同产品差价

htaccess重命名index.php以在URL中显示为SEO的友好名称

用ajax获取文件 - CORS问题&;设置缓存?

如何在自定义邮箱内容中获取WooCommerce订单项目的详细信息?

在 PHP 中将字符串分解为数组(字符串类似于 WP 短代码)

如何将不同的 Woocommerce 费用合并为一个名称?

如何在 Phpunit 的静态提供程序中创建测试双打?

Xdebug 不会在断点处停止

yii2 sql迁移覆盖新更改的记录