curt            Sat Jul 17 00:51:28 2004 EDT

  Modified files:              
    /phpdoc/en/language/oop5    paamayim-nekudotayim.xml 
  Log:
  paamayim nekudotayim documentation.
  
  
http://cvs.php.net/diff.php/phpdoc/en/language/oop5/paamayim-nekudotayim.xml?r1=1.1&r2=1.2&ty=u
Index: phpdoc/en/language/oop5/paamayim-nekudotayim.xml
diff -u phpdoc/en/language/oop5/paamayim-nekudotayim.xml:1.1 
phpdoc/en/language/oop5/paamayim-nekudotayim.xml:1.2
--- phpdoc/en/language/oop5/paamayim-nekudotayim.xml:1.1        Sun Jul 11 08:33:25 
2004
+++ phpdoc/en/language/oop5/paamayim-nekudotayim.xml    Sat Jul 17 00:51:27 2004
@@ -1,11 +1,98 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.1 $ -->
+<!-- $Revision: 1.2 $ -->
  <sect1 id="language.oop5.paamayim-nekudotayim">
   <title>::</title>
+
+  <para>
+   The Paamayim Nekudotayim, or in simpler terms, the double colon.
+   This token provides a way to access <link
+   linkend="language.oop5.static">static</link>, <link
+   linkend="language.oop5.constants">constant</link> or overridden members
+   or methods of a class. 
+  </para>
+
+  <para>
+   When referencing these items from outside the class definition, you use
+   name of the class.
+  </para>
+
+  <example>
+   <title>:: from outside class definition</title>
+   <programlisting role="php">
+<![CDATA[
+<?php
+class MyClass {
+  const CONST_VALUE = 'A constant value';
+}
+echo MyClass::CONST_VALUE;
+?>
+]]>
+   </programlisting>
+  </example>
+
+  <para>
+   Two special keywords <varname>self</varname> and <varname>parent</varname>
+   are used to access members or methods from inside the class definition.
+  </para>
+
+  <example>
+   <title>:: from inside the class definition</title>
+   <programlisting role="php">
+<![CDATA[
+<?php
+class OtherClass extends MyClass {
+  public static $my_static = 'static var';
+
+  public static function doubleColon() {
+     echo parent::CONST_VALUE . "\n";
+     echo self::$my_static . "\n";
+  }
+}
+
+OtherClass::doubleColon();
+?>
+]]>
+   </programlisting>
+  </example>
+
   <para>
-   .
+   When an extending class overrides the parents definition of a method,
+   php will not call the parent's method.  It is up to the extending class
+   to call the parent method or not, this also applies to <link
+   linkend="language.oop5.decon">Constructors and Destructors</link>, <link
+   linkend="language.oop5.overloading">Overloading</link> and <link
+   linkend="language.oop5.magic">Magic</link> method defintions as well.
   </para>
 
+  <example>
+   <title>Calling a parent's method</title>
+   <programlisting role="php">
+<![CDATA[
+<?php
+class MyClass {
+
+  protected function myFunc() {
+    echo "MyClass::myFunc()\n";
+  }
+}
+
+class OtherClass extends MyClass {
+
+  /* Override parent's definition */
+  public function myFunc() {
+
+    /* But still call the parent function */
+    parent::myFunc();
+    echo "OtherClass::myFunc()\n";
+  }
+}
+
+$class = new OtherClass();
+$class->myFunc();
+?>
+]]>
+   </programlisting>
+  </example>
 
  </sect1>
  
@@ -29,3 +116,4 @@
 vim: et tw=78 syn=sgml
 vi: ts=1 sw=1
 -->
+

Reply via email to