aidan Wed Sep 29 12:27:24 2004 EDT
Modified files:
/phpdoc/en/language/oop5 magic.xml
Log:
Document the magic methods
http://cvs.php.net/diff.php/phpdoc/en/language/oop5/magic.xml?r1=1.1&r2=1.2&ty=u
Index: phpdoc/en/language/oop5/magic.xml
diff -u phpdoc/en/language/oop5/magic.xml:1.1 phpdoc/en/language/oop5/magic.xml:1.2
--- phpdoc/en/language/oop5/magic.xml:1.1 Sun Jul 11 08:33:25 2004
+++ phpdoc/en/language/oop5/magic.xml Wed Sep 29 12:27:24 2004
@@ -1,12 +1,90 @@
<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.1 $ -->
+<!-- $Revision: 1.2 $ -->
<sect1 id="language.oop5.magic">
<title>Magic Methods</title>
<para>
- .
+ The function names
+ <literal>__sleep</literal>,
+ <literal>__wakeup</literal>, and
+ <literal>__toString</literal>
+ are magical in PHP classes. You
+ cannot have functions with these names in any of your
+ classes unless you want the magic functionality associated
+ with them.
</para>
+ <caution>
+ <simpara>
+ PHP reserves all function names starting with __ as magical.
+ It is recommended that you do not use function names with
+ __ in PHP unless you want some documented magic functionality.
+ </simpara>
+ </caution>
+
+ <sect2 id="language.oop5.magic.sleep">
+ <title><literal>__sleep</literal> and <literal>__wakeup</literal></title>
+ <para>
+ <function>serialize</function> checks if your class has a function with
+ the magic name <literal>__sleep</literal>. If so, that function is
+ being run prior to any serialization. It can clean up the object
+ and is supposed to return an array with the names of all variables
+ of that object that should be serialized.
+ </para>
+ <para>
+ The intended use of <literal>__sleep</literal> is to close any
+ database connections that object may have, committing pending
+ data or perform similar cleanup tasks. Also, the function is
+ useful if you have very large objects which need not be
+ saved completely.
+ </para>
+ <para>
+ Conversely, <function>unserialize</function> checks for the
+ presence of a function with the magic name
+ <literal>__wakeup</literal>. If present, this function can
+ reconstruct any resources that object may have.
+ </para>
+ <para>
+ The intended use of <literal>__wakeup</literal> is to
+ reestablish any database connections that may have been lost
+ during serialization and perform other reinitialization
+ tasks.
+ </para>
+ </sect2>
+ <sect2 id="language.oop5.magic.tostring">
+ <title><literal>__toString</literal></title>
+ <para>
+ The <literal>__toString</literal> method allows a class to decide
+ how it will react when it is converted to a string.
+ </para>
+ <programlisting role="php">
+<![CDATA[
+<?php
+// Define a simple class
+class TestClass {
+ public $foo;
+
+ public function __construct($foo) {
+ $this->foo = $foo;
+ }
+
+ public function __toString() {
+ return $this->foo;
+ }
+}
+
+$class = new TestClass('Hello');
+echo $class;
+?>
+]]>
+ </programlisting>
+ &example.outputs;
+ <screen>
+<![CDATA[
+Hello
+]]>
+ </screen>
+ </sect2>
</sect1>
<!-- Keep this comment at the end of the file