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

Reply via email to