我创建了一个类,但它是巨大的,有很多方法。我想切片来分离子类。
我尝试这样做:
class ParentClass{
}
class ChildClass1 extends ParentClass{
public function childFunction1(){
}
}
class ChildClass2 extends ParentClass{
public function childFunction2(){
}
}
$myObject = new ParentClass();
$myObject->childFunction1();
$myObject->childFunction2();
但没有用。
这可能吗?
有没有别的解决办法?
不,它不会那样工作。你正在做的是实例化一个空类,并试图调用它的方法。
你应该使用合成。基本思想是将多个对象compose
到主对象中。按功能划分对象。始终记住遵循单一职责原则和SOLID的其余部分。
class ParentClass {
}
class ChildClass1 extends ParentClass{
public function childFunction1(){
}
}
class ChildClass2 extends ParentClass{
public function childFunction2(){
}
}
$myObject1 = new ChildClass1();
$myObject2 = new ChildClass2();
$myObject1->childFunction1();
$myObject2->childFunction2();
我感觉是这样的
我自己找到了解决办法。
class ParentClass{
public function childFunctions($className,$functionName){
$c = ucfirst($className);
$$className = neew $c();
return $$className->$finctionName(); // or echo
}
}
class ChildClass1 extends ParentClass{
public function childFunction1(){
}
}
class ChildClass2 extends ParentClass{
public function childFunction2(){
}
}
$myObject = new ParentClass();
$myObject->childFunctions("ChildClass1", "childFunction1");
$myObject->childFunctions("ChildClass2", "childFunction2");
那对我的问题有用。也许有人也有同样的问题。
谢谢你