2015-10-13 3 views
0

Я использую memcache для хранения объекта класса PHP с использованием сериализации и unserialize. Есть ли способ вернуть исходный объект класса с помощью нового метода?PHP Получить объект из кэша

Мой пример:

class Test 
{ 
    public $id; 

    public function __construct($id) 
    { 
     if (InCache($id)) { 
      return unserialize(GetFromCache($id)); 
     } else { 
      $this->id = $id; 
      SaveToCache(serialize($this)); 
     } 
    } 
}  

Призвание:

$t = new Test(1); 

Если идентификатор в кэше или нет, мне нужно снова тот же результат:

Test Object 
(
    [id] => 1 
) 

Кто-нибудь может помочь?

ответ

3

в PHP вы не можете return в __construct функция

вы могли бы получить новый объект от завода Funktion, как это:

class Test 
{ 
    public $id; 

    protected function __construct($id) 
    { 
     $this->id = $id; 
     SaveToCache(serialize($this)); 
    } 

    public static function getNewObject($id) 
    { 
     if (InCache($id)) { 
      return unserialize(GetFromCache($id)); 
     } else { 
      return new self($id); 
     } 
    } 
} 

Призвание:

$t = Test::getNewObject(1); 
+0

Спасибо. Последний вопрос: для выполнения одного и того же решения нет функции selfreplace? – Ondra

+0

@Ondra В php нет функции selfreplace. Это верно. – Kanti

Смежные вопросы