Sophie

Sophie

distrib > Mandriva > 2008.1 > i586 > by-pkgid > 703d980c580707c382b4e43e25965bc5 > files > 11790

php-manual-pt_BR-5.2.4-1mdv2008.1.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Serializando objetos - objetos em sessões</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Manual do PHP"
HREF="index.html"><LINK
REL="UP"
TITLE="Classes e Objetos(PHP 4)"
HREF="language.oop.html"><LINK
REL="PREVIOUS"
TITLE="parent"
HREF="keyword.parent.html"><LINK
REL="NEXT"
TITLE="As funções mágicas __sleep e __wakeup"
HREF="language.oop.magic-functions.html"><META
HTTP-EQUIV="Content-type"
CONTENT="text/html; charset=UTF-8"></HEAD
><BODY
CLASS="sect1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Manual do PHP</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="keyword.parent.html"
ACCESSKEY="P"
>Anterior</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Capítulo 18. Classes e Objetos(PHP 4)</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="language.oop.magic-functions.html"
ACCESSKEY="N"
>Próxima</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="language.oop.serialization"
>Serializando objetos - objetos em sessões</A
></H1
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>Nota: </B
>
    No PHP 3, objetos perdem suas associações entre classes
    através do processo de serialização e desserialização.
    A variável resultante é do tipo objeto, mas sem classe
    nem métodos, algo bem sem utilidade (de fato, ele se torna
    apenas um array com uma sintaxe engraçada).
   </P
></BLOCKQUOTE
></DIV
><DIV
CLASS="caution"
><P
></P
><TABLE
CLASS="caution"
BORDER="1"
WIDTH="100%"
><TR
><TD
ALIGN="CENTER"
><B
>Cuidado</B
></TD
></TR
><TR
><TD
ALIGN="LEFT"
><P
>&#13;    As informações seguintes se aplicam ao PHP &#62; 4.
   </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;   <A
HREF="function.serialize.html"
><B
CLASS="function"
>serialize()</B
></A
> retorna uma string contendo uma
   representação linear de qualquer valor que pode ser armazenado no
   PHP. <A
HREF="function.unserialize.html"
><B
CLASS="function"
>unserialize()</B
></A
> pode ser utilizado para
   recriar os valores da variável original. Usando serialize para
   salvar um objeto irá preservar todas as variáveis de um objeto. As
   funções de um objeto não serão salvas, apenas o nome
   da classe.
  </P
><P
>&#13;   Para ser possível fazer o <A
HREF="function.unserialize.html"
><B
CLASS="function"
>unserialize()</B
></A
> de um objeto, a
   classe do objeto precisa estar definida. Ou seja, se você tem um objeto
   <CODE
CLASS="varname"
>$a</CODE
> da classe A em page1.php e o serializa, você
   consegue uma string que se refere a classe A e contém todos os valores de variáveis
   contidos em <CODE
CLASS="varname"
>$a</CODE
>. Se você precisa desserializa-la
   em page2.php, recriando <CODE
CLASS="varname"
>$a</CODE
> da classe A, a
   definição da classe A precisa estar presente na page2.php. Isto pode por ser feito, por
   exemplo, armazenando a definição da classe A em um arquivo separado,
   incluindo este arquivo e ambos os arquivos page1.php e page2.php.
  </P
><DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN5491"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /></font><font color="#FF8000">// classe_a.inc.php:<br /><br />&nbsp;&nbsp;</font><font color="#007700">class </font><font color="#0000BB">A </font><font color="#007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var </font><font color="#0000BB">$um </font><font color="#007700">= </font><font color="#0000BB">1</font><font color="#007700">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function </font><font color="#0000BB">mostre_um</font><font color="#007700">() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo </font><font color="#0000BB">$this</font><font color="#007700">-&gt;</font><font color="#0000BB">um</font><font color="#007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br /><br /></font><font color="#FF8000">// page1.php:<br /><br />&nbsp;&nbsp;</font><font color="#007700">include(</font><font color="#DD0000">"classe_a.inc.php"</font><font color="#007700">);<br /><br />&nbsp;&nbsp;</font><font color="#0000BB">$a </font><font color="#007700">= new </font><font color="#0000BB">A</font><font color="#007700">;<br />&nbsp;&nbsp;</font><font color="#0000BB">$s </font><font color="#007700">= </font><font color="#0000BB">serialize</font><font color="#007700">(</font><font color="#0000BB">$a</font><font color="#007700">);<br />&nbsp;&nbsp;</font><font color="#FF8000">// armazena $s em algum lugar que page2,php possa encontra-la<br />&nbsp;&nbsp;</font><font color="#0000BB">$fp </font><font color="#007700">= </font><font color="#0000BB">fopen</font><font color="#007700">(</font><font color="#DD0000">"armazenamento"</font><font color="#007700">, </font><font color="#DD0000">"w"</font><font color="#007700">);<br />&nbsp;&nbsp;</font><font color="#0000BB">fwrite</font><font color="#007700">(</font><font color="#0000BB">$fp</font><font color="#007700">, </font><font color="#0000BB">$s</font><font color="#007700">);<br />&nbsp;&nbsp;</font><font color="#0000BB">fclose</font><font color="#007700">(</font><font color="#0000BB">$fp</font><font color="#007700">);<br /><br /></font><font color="#FF8000">// page2.php:<br /><br />&nbsp;&nbsp;// Isto e preciso para que unserialize funcione normalmente<br />&nbsp;&nbsp;</font><font color="#007700">include(</font><font color="#DD0000">"classe_a.inc.php"</font><font color="#007700">);<br /><br />&nbsp;&nbsp;</font><font color="#0000BB">$s </font><font color="#007700">= </font><font color="#0000BB">implode</font><font color="#007700">(</font><font color="#DD0000">""</font><font color="#007700">, @</font><font color="#0000BB">file</font><font color="#007700">(</font><font color="#DD0000">"armazenamento"</font><font color="#007700">));<br />&nbsp;&nbsp;</font><font color="#0000BB">$a </font><font color="#007700">= </font><font color="#0000BB">unserialize</font><font color="#007700">(</font><font color="#0000BB">$s</font><font color="#007700">);<br /><br />&nbsp;&nbsp;</font><font color="#FF8000">// Agora podemos usar a funcao mostre_um() do objeto $a<br />&nbsp;&nbsp;</font><font color="#0000BB">$a</font><font color="#007700">-&gt;</font><font color="#0000BB">mostre_um</font><font color="#007700">();<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
><P
></P
></DIV
><P
>&#13;   Se você está utilizando sessões e usar <A
HREF="function.session-register.html"
><B
CLASS="function"
>session_register()</B
></A
>
   para registrar objetos, esses objetos serão serializados automaticamente
   no final de cada script PHP, e automaticamente desserializados em
   cada uma das páginas seguintes. Isto significa que esse objetos
   podem estar em qualquer uma de suas páginas desde que elas sejam parte
   de sua sessão.
  </P
><P
>&#13;   É extremamente recomendável que você inclua as definições
   de classe de todos os objetos registrados de todas as suas
   páginas, mesmo que você não use essas classes em todas as
   suas páginas. Se você não o fizer e um objeto for
   desserializado sem sua definição de classe presente, ele
   perde usa associação com a classe e se torna um objeto da classe
   <TT
CLASS="literal"
>stdClass</TT
>, sem qualquer funções disponíveis.
   o que as deixa silenciosamente sem funcionalidade.
  </P
><P
>&#13;   Assim, se no exemplo acima <CODE
CLASS="varname"
>$a</CODE
> se tornar parte de uma sessão
   pela utilização de <TT
CLASS="literal"
>session_register("a")</TT
>, você precisa incluir
   o arquivo <TT
CLASS="literal"
>classe_a.inc.php</TT
> em todos as suas páginas, não somente em page1.php
   e page2.php.
  </P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="keyword.parent.html"
ACCESSKEY="P"
>Anterior</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Principal</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="language.oop.magic-functions.html"
ACCESSKEY="N"
>Próxima</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><TT
CLASS="literal"
>parent</TT
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="language.oop.html"
ACCESSKEY="U"
>Acima</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>As funções mágicas <TT
CLASS="literal"
>__sleep</TT
> e <TT
CLASS="literal"
>__wakeup</TT
></TD
></TR
></TABLE
></DIV
></BODY
></HTML
>