По сути, я пытаюсь сделать так, чтобы объект ссылался на другой объект того же класса - изнутри метода.Было бы идеально, если бы сработало следующее:
$this = new self;
Но никто не может переназначить $this
в php.
Я, конечно, знаю, что могу вернуть другой объект из метода и использовать его, поэтому, пожалуйста, не советуйте этого.Вопрос:
Как я могу сделать $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);
В обеих ситуациях я сохраняю много кода и путаницу, не правда ли?