curt Fri Jul 16 00:15:30 2004 EDT
Modified files: /phpdoc/en/language/oop5 static.xml Log: The content for the static keyword. http://cvs.php.net/diff.php/phpdoc/en/language/oop5/static.xml?r1=1.1&r2=1.2&ty=u Index: phpdoc/en/language/oop5/static.xml diff -u phpdoc/en/language/oop5/static.xml:1.1 phpdoc/en/language/oop5/static.xml:1.2 --- phpdoc/en/language/oop5/static.xml:1.1 Sun Jul 11 08:33:25 2004 +++ phpdoc/en/language/oop5/static.xml Fri Jul 16 00:15:30 2004 @@ -1,11 +1,80 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.1 $ --> +<!-- $Revision: 1.2 $ --> <sect1 id="language.oop5.static"> - <title>Static</title> + <title>Static Keyword</title> + + <para> + Declaring class members or methods as static, makes them callable + from outside the object context. A member or method declared + with static can not be accessed with a variable that is an instance + of the object and cannot be re-defined in an extending class. + </para> + <para> - . + The static declaration must be after the visibilty declaration. For + compatibility with PHP 4, if no <link + linkend="language.oop5.visibility">visibility</link> + declaration is used, then the member or method will be treated + as if it was declared as <literal>public static</literal>. </para> + <para> + Because static methods are callable without an instance of + the object created, the pseudo variable <varname>$this</varname> is + not available inside the method declared as static. + </para> + + <example> + <title>Static member example</title> + <programlisting role="php"> +<![CDATA[ +<?php +class Foo { + public static $my_static = 'foo'; + + public function staticValue() { + return self::$my_static; + } +} + +class Bar extends Foo { + + public function fooStatic() { + return parent::$my_static; + } +} + + +print Foo::$my_static . "\n"; + +$foo = new Foo(); +print $foo->staticValue() . "\n"; +print $foo->my_static . "\n"; // Undefined my_static + +print Bar::$my_static . "\n"; +$bar = new Bar(); +print $bar->fooStatic() . "\n"; +?> +]]> + </programlisting> + </example> + + <example> + <title>Static method example</title> + <programlisting role="php"> +<![CDATA[ +<?php +class Foo { + public static function aStaticMethod() { + // ... + } +} + +Foo::aStaticMethod(); +?> +]]> + </programlisting> + </example> </sect1>