从父类创建对象,从子类调用类


Creating object from parent class and call class from child class

我创建了一个类,但它是巨大的,有很多方法。我想切片来分离子类。

我尝试这样做:


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");

那对我的问题有用。也许有人也有同样的问题。

谢谢你