是否可以仅在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