A função serialize() retorna uma string contendo uma representação de stream de bytes de qualquer valor que pode ser persistido em PHP. A função unserialize() pode utilizar-se desta string para recriar o valor original. Utilizando serialização para persistir um objeto, salva todas as variáveis deste objeto. As funções em um objeto não serão persistidas, somente o nome da classe.
Para ser capaz utilizar a função unserialize() em um objeto a classe deste objeto precisa estar definida. Isto é, se você possui um objeto $a de uma classe A em page1.php e o serializa, você irá possuir uma string que se refere à classe A contendo os valores das variáveis atribuídos em $a. Se você deseja ser capaz de deserializar isto em page2.php, recriando $a da classe A, a definição da classe A precisa estar presente em page2.php. Isto pode ser feito por exemplo ao se gravar a definição da classe A em um arquivo e o incluí-lo em ambos os arquivos page1.php e page2.php.
<?php
// classa.inc:
class A {
var $one = 1;
function show_one() {
echo $this->one;
}
}
// page1.php:
include("classa.inc");
$a = new A;
$s = serialize($a);
// grava $s em algum lugar onde page2.php possa acessá-lo.
$fp = fopen("store", "w");
fwrite($fp, $s);
fclose($fp);
// page2.php:
// isto é necesário para a deserialização ocorrer corretamente.
include("classa.inc");
$s = implode("", @file("store"));
$a = unserialize($s);
// agora utilize a função show_one() do objeto $a.
$a->show_one();
?>
Se você está utilizando sessões e a função session_register() para registrar objetos, estes objetos são serializados automaticamente ao final de cada página PHP, e deserializados automaticamente no início das páginas seguintes. Isto basicamente significa que estes objetos podem ser utilizados em qualquer parte de suas páginas por fazerem parte de sua sessão.
É fortemente recomentado que você inclua as definições das classes de todos os objetos registrados em todas as páginas, mesmo que você não vá utilizá-lo em todas as suas páginas. Se você não o fizer e um objeto for deserializado sem sua classe definida, ele perderá a associação com a classe e se tornará um objeto do tipo __PHP_Incomplete_Class_Name sem nenhuma função disponível, ou seja, se tornará praticamente inútil.
Então se no exemplo acima $a se tornar parte da sessão ao se executar session_register("a"), você deve incluir o arquivo classa.inc em todas as suas páginas, não somente em page1.php e page2.php.