Php 用特征扩展类
由于我刚刚从另一种语言跳到PHP,我想问一下,向类添加扩展的正确方法是什么。我现在的配置如下:Php 用特征扩展类,php,class,traits,Php,Class,Traits,由于我刚刚从另一种语言跳到PHP,我想问一下,向类添加扩展的正确方法是什么。我现在的配置如下: class A extends B { use C; public function a(){ } } 我需要向类A添加一些额外的函数,但逻辑上将它们从类A中分离出来,所以我想我应该使用特征C 所以我的问题是-我能在我的特性C中使用函数a()吗?我知道我可以在trait C中定义抽象函数a(),但是我认为这根本不是一个好的实践。也许我能以某种方式将其注入
class A extends B {
use C;
public function a(){
}
}
我需要向类A添加一些额外的函数,但逻辑上将它们从类A中分离出来,所以我想我应该使用特征C
所以我的问题是-我能在我的特性C中使用函数a()吗?我知道我可以在trait C中定义抽象函数a(),但是我认为这根本不是一个好的实践。也许我能以某种方式将其注入到一种特性中,或者这也是一种不好的做法?这是可能的,选择由开发人员自行决定,最好的解决方案是基于经验的
trait C {
public function hello() {
parent::a();
echo 'World!';
}
}
class B {
function a() {
echo "hello";
}
}
class A extends B{
use C;
}
(new A())->hello(); // helloWorld!
比如说:
Class B {
public function a () {
//Does something
}
}
Class A extends B {
//We got access to B's public function. If you want to execute B's a and add some more content, then
public function a() {
parent::a();
//Some more content
}
}
这些特性是由于PHP不允许从多个类继承(单一继承)的特性而开发的。通过创建一个trait并将其应用于一个类,您就知道了如何继承它的方法
这实际上取决于你的需要
问:您想创建一个接口并让其他类实现某些方法吗?
A:创建一个接口
问:您想创建一个包含一些实现的抽象类,并允许其他类使用它们吗?答:创建一个抽象类
问:您是否希望一个类从另外两个类继承,并且它们具有不同的功能?A:创造一种特质
最好的方法是使用您可以使用的工具,以便输出您想要的结果并保持其组织性如果您想要一个抽象的方法,听起来界面比特性更有益于您。