Gracias GatorV, pero no hubo caso, tengo esos métodos implementados en mi clase de base de datos connect() y disconnect(), pero al implementarlo de la forma de tu ejemplo mi objeto carro queda como null (se pierde todo).
 
como "momentaneo" opté por hacer lo siguiente:  
 Código PHP:
    if(isset($_SESSION["cart"]) && $_SESSION["cart"]!=''){ 
            $cart= unserialize($_SESSION["cart"]);
           $cart->addDbObject($db);
        } else { 
            $cart= new shoppingCart($db);  // $db objeto de abstracción base de dato
        } 
    
  funciona bien, pero me gustaría que quede hecho con los métodos mágicos:  
 Código PHP:
    class ShoppingCart {
      public function __sleep() {
             $db->disconnect(); // Cerramos la conexion
      }
      public function __wakeup() {
             $db->connect(); // Volvemos a conectar a la base de datos
      }
} 
    
  Cualquier sugerencia estaría muy agradecido.
Mis metodos de connect() y disconnect() tiene la siguiente forma:  
 Código PHP:
    // define MySQL class
class MySQL
{
/*--------------------------------*/
    // connect to database
    public function connectDB()
    {
        if(!$this->conId=mysql_connect($this->host,$this->user,$this->password))
        {
            throw new Exception('Error connecting to the server');
        }
        if(!mysql_select_db($this->database,$this->conId))
        {
            throw new Exception('Error selecting database');
        }
    }
    function disconnect()
    {
        if($this->conId)
        {
            if($this->query_result)
            {
                @mysql_free_result($this->query_result);
            } elseif ($this->result){
                @mysql_free_result($this->result);
            }
            $result = @mysql_close($this->conId);
            return $result;
        }
        else
        {
            return false;
        }
    } 
    
  
Gracias y saludos 
zsamer