Можно ли присвоить $ this другому объекту, загруженному из memcache? - PullRequest
1 голос
/ 17 мая 2011

Можно ли присвоить $ this другому объекту, загруженному из memcache в конструкторе? Я в основном беспокоюсь о производительности и памяти.

Я думал примерно так:

function __construct($userid){
   global $memcachedvar;

   if($userobject = $memcachedvar->get($userid){
      $this = $userobject;
   } 
}

Это плохой шаблон дизайна?

Ответы [ 2 ]

0 голосов
/ 18 мая 2011

Нет, все не в порядке. Это на самом деле недействительно.

$this является магическим и не может быть переназначен.

0 голосов
/ 18 мая 2011

Из комментариев:

PHP запрещает переназначение $this в любом месте объекта; Ваш код вызовет фатальную ошибку. К тому времени, когда вызывается конструктор, память уже будет выделена для совершенно нового объекта, и было бы неуместно (в зависимости от движка в любом случае) менять его на другой. - BoltClock

Сам объект не должен отвечать за кеширование. Если вам нужна такая функциональность - добавьте еще один слой, который будет создавать новый объект или извлекать его из mcd. - zerkms

@ BoltClock и @zerkms дают отличные комментарии. Ясно, что этот конструктор на самом деле не возможен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...