занулить свойство объекта

berkut

Новичок
занулить свойство объекта

как красиво занулить св-во объекта перед его сериализацией, а потом его восстановить и что-бы работало и в пхп4 и 5?
псевдо-код, вся соль в goToCache()
PHP:
class Serializable
{
    var $db;
    
    function &getInstance(&$db, $params)
    {
        if (cached($params)) {
            $instance = unserialize($cached_string);
            $instance->db =& $db;
        }
        else {
            $instance =& new Serializable($db, $params);
            $instance->goToCache();
        }
        return $instance;
    }            
    
    function Serializable(&$db_obj)
    {
        $this->db =& $db;
    }
    
    function goToCache()
    {       
        $dummy =& $this->db;
        $this->db = null;
        cache(serialize($this));
        $this->db = $dummy;
    }       
}
 

berkut

Новичок
по большому счёту ансет то-же самое что и =нулл

-~{}~ 14.01.08 21:33:

всё, понял, был не прав
 

A1x

Новичок
использовать __sleep __wakeup ?

-~{}~ 14.01.08 20:51:

как вариант вообще убрать свойство $db и сделать метод

function &getConnection() {
return $GLOBALS['DB'];
}
 

A1x

Новичок
__sleep __wakeup есть в мане Classes and Objects (PHP 4) - вроде бы должно работать


Автор оригинала: berkut
а с методом интересно, даже и не думал как-то. только мне кажется как-то не рационально
почему не рационально? преимущество - не надо передавать везде параметр $db плюс в данном случае нет проблемы с сериализацией
 
Сверху