簡體   English   中英

從父類創建對象並從子類調用類

[英]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");

這對我的問題有用。 也許有人有同樣的問題。

還是很感謝你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM