itrocks/extend

一些注释,用于模拟PHP中的多重继承

dev-master 2023-04-24 05:13 UTC

This package is auto-updated.

Last update: 2024-09-24 08:22:52 UTC


README

遗憾的是,PHP不允许简单的多重继承。

此外,没有机制可以声明一个特性是为增强特定类(或一些特定类)而设计的。

这个小型库添加了一个重复的名为ITRocks\Extendattribute,允许声明额外的扩展:

  • 到类:您将能够基于这些扩展模拟一些多重继承机制;
  • 到接口或特性:仅将此特性保留给特定类实现或使用;
  • 到特性:表明该特性是为在继承特定类或使用特定特性的类中使用而设计的。

另一个属性ITRocks\Extend\Implement允许声明一个特性是为实现给定的接口中原型化方法而设计的。

示例

it.rocks广泛使用ITRocks\Extend属性来声明特性,这些特性旨在根据您的使用案例部署配置随意扩展基类。

use ITRocks\Extend;

class My_Expandable
{
	public string $a_property;
}

interface My_Interface
{
	public function getSomething() : string;
}

#[Extend(My_Expandable::class), Implement(My_Interface::class)]
trait My_Extension
{
	public string $additional_optional_property;
	public function getSomething() : string { return $this->additional_optional_property; }
}

应用示例

您可以使用额外的itrocks/build库来应用这些继承机制。

使用前面的示例代码和以下配置

$configuration = [My_Expandable::class => [My_Extension::class]];

itrocks/build将替换您源代码中所有的My_Expandable实例为以下构建类的实例

class My_Expandable\B extends My_Expandable implements My_Interface
{
  use My_Extension;
}

请参阅itrocks/build的文档以了解如何使用。