PHP - Как переименовать свойство объекта? - PullRequest
7 голосов
/ 05 сентября 2011

Интересно, как я могу переименовать свойство объекта в PHP, например:

<?php
    $obj = new stdclass();
    $obj->a = 10;  // will be renamed
    $obj->b = $obj->a; // rename "a" to "b", somehow!
    unset($obj->a); // remove the original one

Это не работает в PHP5.3, (не относится к более ранним версиям), поскольку для $obj->b будет указана ссылка $obj->a, поэтому при сбросе $obj->a значение $obj->b будет нулевым , Есть идеи, пожалуйста?

Ответы [ 3 ]

6 голосов
/ 05 сентября 2011

Ваш код работает правильно, $obj->b равно 10 после выполнения: http://codepad.org/QnXvueic

Когда вы сбрасываете $obj->a, вы просто удаляете свойство, но не трогаете значение. Если значение используется другой переменной, оно не изменяется в переменной порядка.

0 голосов
/ 05 сентября 2011

Использовать клонирование объектов. Справочная информация: PHP __clone () документация

0 голосов
/ 05 сентября 2011
<?php     
$obj = new stdclass();
$obj->a = 10;  // will be renamed
$obj->b = $obj->a; // rename "a" to "b", somehow!
unset($obj->a); // remove the original one
var_dump($obj->b); //10 Works fine
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...