itrocks / extend
一些注释,用于模拟PHP中的多重继承
dev-master
2023-04-24 05:13 UTC
Requires
- php: >=8.1
Suggests
- itrocks/build: An implementation of class building using #Extend and #Implement definitions
This package is auto-updated.
Last update: 2024-09-24 08:22:52 UTC
README
遗憾的是,PHP不允许简单的多重继承。
此外,没有机制可以声明一个特性是为增强特定类(或一些特定类)而设计的。
这个小型库添加了一个重复的名为ITRocks\Extend
的attribute
,允许声明额外的扩展:
- 到类:您将能够基于这些扩展模拟一些多重继承机制;
- 到接口或特性:仅将此特性保留给特定类实现或使用;
- 到特性:表明该特性是为在继承特定类或使用特定特性的类中使用而设计的。
另一个属性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的文档以了解如何使用。