【发布时间】:2011-05-01 10:11:58
【问题描述】:
基本上我想要实现的是让对象引用同一类的另一个对象 - 从方法内部。如果以下方法可行,那就完美了:
$this = new self;
但是不能在 php 中重新分配 $this。
我当然知道,我可以从方法中返回另一个对象并使用它,所以请不要这么建议。问题是:
如何使$this 成为同一类的另一个对象的克隆?
或者更具体地说,
我希望一个对象恢复到之前保存的特定状态。
编辑:一些可能有用的例子。
假设你有一个 Url 对象,它接受控制器、动作和更多的东西。您将让它获取许多具有相同的链接,例如控制器和操作,但其他属性会有所不同。我用公共参数实例化对象,调用一个方法来保存它的状态,它在输出链接后恢复(IOW 在 __toString 方法之后)。
$defaultPath = Url::factory('controller','action1')->extraParams('status',0)->save();
echo $defaultPath->action('action2'); // this has action2 as action and a status 0 as extra params
echo $defaultPath->extraParams('status',2); // this has action1 as action and 2 as status
另一个用途是我有一个 CRUD 表,我必须将每一列配置为传递给主表对象的对象。通过列后,我在列上启动了一个重置方法,所以我可以有如下代码:
$column->field = 'layouts_id';
$column->value = $layoutId;
$dbInput->addColumn($column);
$column->field = 'pages_id';
$column->value = $pagesId;
$dbInput->addColumn($column);
在这两种情况下,我都节省了大量代码和混乱,你不觉得吗?
【问题讨论】: