如果您現在正在跟隨OOP,則應刪除$ cd的全局調用,將其設置爲父母或子女的成員變種。
正如我所看到的那樣,構造函數通常在您實例化對象時調用,而不是通過同一類的另一種方法(如CD_Log所執行的方法)來調用。
例如:
$myCdObject = new MyCdClass(); // Automatically calls constructor
$myCdObject->Cd_Log($string);
利用上述例子你是確保CD_Log方法僅處理log
邏輯。除非你讓CD_Log靜態函數,那麼你可以實例中的類:
public static function CD_Log($id)
{
$myCdObject = MyCdClass(); // Automatically calls constructor
// Continue with `log` logic
}
要回答你的問題,你可能想在子類構造函數,它會調用父類的構造明確:
class parent
{
public function __construct($id)
{
$this->id = $id;
}
}
class child extends parent
{
public function __construct($id)
{
// Going to take advantage of shared logic
parent::__construct($id);
// Now lets do some child class specific stuff
}
}
謝謝!順便說一句,如果孩子不需要父母的功能,我應該使用extrends方法嗎?當父母做事情時,只需要父母的孩子去做其他工作? – Jenny
如果這些類將共享任何屬性,無論它是成員變量還是方法,最好進行擴展。 –
謝謝!這很清楚! – Jenny