由于我刚从另一种语言跳到PHP,所以我想问你什么是向类添加扩展的正确方法。我现在的配置如下:
class A extends B {
use C;
public function a(){
}
}
我需要向A类添加一些其他功能,但从逻辑上将它们与之分开,因此尽管我将使用特征C。
所以我的问题是-我可以在特征C中使用函数a()吗?我知道我可以在特征C中定义抽象函数a(),但是我认为这根本不是一个好习惯。也许我可以以某种方式将其注入特质,还是不好的做法?
答案 0 :(得分:3)
有可能,选择权是开发人员的决定权,最好的解决方案是基于经验。
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!
答案 1 :(得分:3)
让我们说:
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不允许从多个类继承(单继承),因此开发了特性。通过创建特征并将其应用于类,您就知道继承了它的方法
这真的取决于您的需求。
问:您是否要创建一个接口并使其他类实现某些方法? A:创建一个界面问:是否要创建具有某些实现的抽象类,并允许其他类使用它们? A:创建一个抽象类
问:您是否要让一个类继承其他两个类,并且它们具有不同的功能?答:创建一个特征
最好的方法是使用您可以使用的工具,以便输出所需的结果并使其井井有条