curt Sat Aug 14 20:17:12 2004 EDT Added files: /phpdoc/en/language/oop5 basic.xml Log: New basic oop5 documentation
http://cvs.php.net/co.php/phpdoc/en/language/oop5/basic.xml?r=1.1&p=1 Index: phpdoc/en/language/oop5/basic.xml +++ phpdoc/en/language/oop5/basic.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <sect1 id="language.oop5.basic"> <title>The Basics</title> <sect1 id="oop5.basic.class"> <title>class</title> <para> Every class definition begins with the keyword class, followed by a class name, which can be any name that isn't a reserverd word in PHP. Followed by A pair of curly braces, of which contains the definition of the classes members and methods. Within each method, except for <link linkend="language.oop5.static">static</link> methods, a psudo variable <varname>$this</varname> is available. <varname>$this</varname> is a reference to the same instance that called the method. </para> <example> <title>Simple Class definition</title> <programlisting role="php"> <![CDATA[ <?php class SimpleClass { /* member declaration */ public $var = 'a default value'; /* method declaration */ public function displayVar() { echo $this->var; /* Echo my own $var value */ } } ?> ]]> </programlisting> </example> </sect1> <sect1 id="oop5.basic.new"> <title>new</title> <para> To create an instance of an object, a new object must be created and assigned to a variable. An object will always be assigned when creating a new object unless the object has a <link linkend="language.oop5.decon">constructor</link> defined that throws an <link linkend="language.oop5.exceptions">exception</link> on error. </para> <example> <title>Creating an instance</title> <programlisting role="php"> <![CDATA[ <?php $instance = new SimpleClass() ?> ]]> </programlisting> </example> <para> When assigning an already created instance of an object to a new variable, the new variable will access the same instance as the object that was assigned. This behaviour is the same when passing instances to a function. A new instance of an already created object can be made by <link linkend="language.oop5.cloning">cloning</link> it. </para> <example> <title>Object Assignment</title> <programlisting role="php"> <![CDATA[ <?php $assigned = $instance; $reference =& $instance; $instance->var = '$assigned will have this value'; $instance = null; /* $instance and $reference become null */ var_dump($instance); var_dump($reference); var_dump($assigned); ?> ]]> </programlisting> &example.outputs; <screen> <![CDATA[ NULL NULL object(SimpleClass)#1 (1) { ["var"]=> string(30) "$assigned will have this value" } ]]> </screen> </example> </sect1> <sect1 id="oop5.basic.extend"> <title>extend</title> <para> A class can inherit methods and members of another class by using the extend keyword in the declaration. It is not possible to extend multiple classes, a class can only inherit one base class. </para> <para> The inherited methods and members can be overloaded, unless the parent class has defined a method as <link linkend="language.oop5.final">final</link>, by redeclaring them within the same name defined in the parent class. It is possible to access the overloaded method or members by referencing them with <link linkend="lanuguage.oop5.paamayim-nekudotayim">parent::</link> </para> <example> <title>Simple Class Inherintance</title> <programlisting role="php"> <![CDATA[ <?php class ExtendClass extends SimpleClass { /* Redefine the parent method */ function displayVar() { echo "Extending class\n"; parent::displayVar(); } } $extended = new ExtendClass(); $extended->displayVar(); ?> ]]> </programlisting> &example.outputs; <screen> <![CDATA[ Extending class a default value ]]> </screen> </example> </sect1> </sect1> <!-- 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 -->