是否可以僅在PHP中克隆對象的父對象?我試過使用此代碼,但它返回一個Fatal error: __clone method called on non-object
錯誤消息。你可以在PHP中克隆一個對象的父對象嗎?
這裏是我的代碼:
class A {
public $val1=1;
public $val2=2;
}
class B extends A {
public $val3=3;
public function getParent() {
return clone parent;
}
}
$B=new B();
$A=$B->getParent();
我inted使用這種方式,將以下內容:
我們建議我不得不類:Table
和Record extends Table
。 Table
類包含有關MySQL數據庫表的信息,它包含的字段,這些字段的默認值,主鍵,最重要的是它包含三種方法(插入,刪除,更新),但我們只會討論這裏刪除。這三個方法作爲匿名函數存儲在類中的受保護數組中。表類的刪除方法告訴在從相應表中刪除某些內容時要執行什麼操作。
例如,我們有以下三種MySQL表:父,孩子,孫子。這些表連接在一起以下列方式:在父表中的記錄可以在孩子被鏈接到多個記錄表,而在孩子表可在孫子被鏈接到幾個記錄的記錄表。
在這個例子中, 父 MySQL表的Table
對象會告訴我們,當我們從這個表中,基於表的主鍵刪除一條記錄,我們應該從
刪除所有記錄
所以兒童表與此記錄相關聯。 子女的刪除方法表中有類似的說法:當我們從表中刪除一條記錄時,我們應該從孫子表中刪除每條記錄,其中子女表剛剛被刪除。
當我在我的代碼中初始化對象時,我將只初始化Record extends Table
對象。第一次,Table
對象通過Record extends Table
對象進行初始化,它應該存儲在Table
類的靜態變量中,以供將來使用,因此從表中刪除某些內容時,我不必創建新記錄,我只是使用:Table::$tables['parent']->delete(5);
這將刪除主鍵爲5的表中的記錄,並刪除需要刪除的所有其他內容。
我不知道這是否有意義(它可以是非全面的,因爲英語不是我的本地語言,或者因爲它在地球的另一端相當晚,也許有一個更容易和更清潔解決我的問題,然後我想象的那個)
這沒有意義,因爲'parent'不是一個對象,而是對父_class_的引用。類不能被克隆。 – arkascha
'返回新父項;' – AbraCadaver
@AbraCadaver哪一個幾乎不會返回一個克隆? – arkascha