<?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.12 $ --> <!-- splitted from ./en/functions/var.xml, last change in rev 1.2 --> <refentry id="function.unserialize"> <refnamediv> <refname>unserialize</refname> <refpurpose> Creates a PHP value from a stored representation </refpurpose> </refnamediv> <refsect1> <title>Description</title> <methodsynopsis> <type>mixed</type><methodname>unserialize</methodname> <methodparam><type>string</type><parameter>str</parameter></methodparam> <methodparam choice="opt"><type>string</type><parameter>callback</parameter></methodparam> </methodsynopsis> <simpara> <function>unserialize</function> takes a single serialized variable (see <function>serialize</function>) and converts it back into a PHP value. The converted value is returned, and can be an <type>integer</type>, <type>float</type>, <type>string</type>, <type>array</type> or <type>object</type>. In case the passed string is not unserializeable, &false; is returned. </simpara> <note> <title>unserialize_callback_func directive</title> <para> It's possible to set a callback-function which will be called, if an undefined class should be instantiated during unserializing. (to prevent getting an incomplete <type>object</type> "__PHP_Incomplete_Class".) Use your &php.ini;, <function>ini_set</function> or &htaccess; to define 'unserialize_callback_func'. Everytime an undefined class should be instantiated, it'll be called. To disable this feature just empty this setting. Also note that the directive unserialize_callback_func directive became available in PHP 4.2.0. </para> </note> <note> <para> The <parameter>callback</parameter> parameter was added in PHP 4.2.0 </para> </note> <para> If the variable being unserialized is an object, after successfully reconstructing the object PHP will automatically attempt to call the <function>__wakeup</function> member function (if it exists). <example> <title>unserialize_callback_func example</title> <programlisting role="php"> <![CDATA[ <?php $serialized_object='O:1:"a":1:{s:5:"value";s:3:"100";}'; // unserialize_callback_func directive available as of PHP 4.2.0 ini_set('unserialize_callback_func','mycallback'); // set your callback_function function mycallback($classname) { // just include a file containing your classdefinition // you get $classname to figure out which classdefinition is required } ?> ]]> </programlisting> </example> </para> <note> <para> In PHP 3, methods are not preserved when unserializing a serialized object. PHP 4 removes that limitation and restores both properties and methods. Please see the <link linkend="language.oop.serialization">Serializing Objects</link> section of <link linkend="language.oop">Classes and Objects</link> or more information. </para> </note> <para> <example> <title><function>unserialize</function> example</title> <programlisting role="php"> <![CDATA[ <?php // Here, we use unserialize() to load session data to the // $session_data array from the string selected from a database. // This example complements the one described with serialize(). $conn = odbc_connect ("webdb", "php", "chicken"); $stmt = odbc_prepare ($conn, "SELECT data FROM sessions WHERE id = ?"); $sqldata = array ($PHP_AUTH_USER); if (!odbc_execute ($stmt, &$sqldata) || !odbc_fetch_into ($stmt, &$tmp)) { // if the execute or fetch fails, initialize to empty array $session_data = array(); } else { // we should now have the serialized data in $tmp[0]. $session_data = unserialize ($tmp[0]); if (!is_array ($session_data)) { // something went wrong, initialize to empty array $session_data = array(); } } ?> ]]> </programlisting> </example> </para> <para> See also <function>serialize</function>. </para> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 -->