colder Fri Aug 3 09:59:57 2007 UTC
Modified files:
/phpdoc/en/language/oop5 constants.xml paamayim-nekudotayim.xml
static.xml
Log:
Prepare documentation for dynamic static calls + fix erroneous information
http://cvs.php.net/viewvc.cgi/phpdoc/en/language/oop5/constants.xml?r1=1.8&r2=1.9&diff_format=u
Index: phpdoc/en/language/oop5/constants.xml
diff -u phpdoc/en/language/oop5/constants.xml:1.8
phpdoc/en/language/oop5/constants.xml:1.9
--- phpdoc/en/language/oop5/constants.xml:1.8 Wed Jun 20 22:24:13 2007
+++ phpdoc/en/language/oop5/constants.xml Fri Aug 3 09:59:57 2007
@@ -1,20 +1,21 @@
<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.8 $ -->
+<!-- $Revision: 1.9 $ -->
<sect1 xml:id="language.oop5.constants" xmlns="http://docbook.org/ns/docbook">
<title>Class Constants</title>
<para>
It is possible to define constant values on a per-class basis remaining the
same and unchangeable. Constants differ from normal variables in that you
- don't use the <varname>$</varname> symbol to declare or use them. Like
- <link linkend="language.oop5.static">static</link> members, constant values
- cannot be accessed from an instance of the object (using
- <literal>$object::constant</literal>).
+ don't use the <varname>$</varname> symbol to declare or use them.
</para>
<para>
The value must be a constant expression, not (for example) a variable, a
class member, result of a mathematical operation or a function call.
</para>
+ <para>
+ As of PHP 5.2.4, it's possible to reference the class using a variable.
+ </para>
+
<example>
<title>Defining and using a constant</title>
<programlisting role="php">
@@ -31,9 +32,13 @@
echo MyClass::constant . "\n";
+$classname = "MyClass";
+echo $classname::constant . "\n";
+
$class = new MyClass();
$class->showConstant();
-// echo $class::constant; is not allowed
+
+echo $class::constant."\n";
?>
]]>
</programlisting>
http://cvs.php.net/viewvc.cgi/phpdoc/en/language/oop5/paamayim-nekudotayim.xml?r1=1.8&r2=1.9&diff_format=u
Index: phpdoc/en/language/oop5/paamayim-nekudotayim.xml
diff -u phpdoc/en/language/oop5/paamayim-nekudotayim.xml:1.8
phpdoc/en/language/oop5/paamayim-nekudotayim.xml:1.9
--- phpdoc/en/language/oop5/paamayim-nekudotayim.xml:1.8 Wed Jun 20
22:24:13 2007
+++ phpdoc/en/language/oop5/paamayim-nekudotayim.xml Fri Aug 3 09:59:57 2007
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.8 $ -->
+<!-- $Revision: 1.9 $ -->
<sect1 xml:id="language.oop5.paamayim-nekudotayim"
xmlns="http://docbook.org/ns/docbook">
<title>Scope Resolution Operator (::)</title>
@@ -17,6 +17,10 @@
</para>
<para>
+ As of PHP 5.2.4, it's possible to reference the class using a variable.
+ </para>
+
+ <para>
Paamayim Nekudotayim would, at first, seem like a strange choice for
naming a double-colon. However, while writing the Zend Engine 0.5
(which powers PHP 3), that's what the Zend team decided to call it.
@@ -32,6 +36,9 @@
const CONST_VALUE = 'A constant value';
}
+$classname = 'MyClass';
+echo $classname::CONST_VALUE;
+
echo MyClass::CONST_VALUE;
?>
]]>
@@ -58,6 +65,9 @@
}
}
+$classname = 'OtherClass';
+echo $classname::doubleColon();
+
OtherClass::doubleColon();
?>
]]>
http://cvs.php.net/viewvc.cgi/phpdoc/en/language/oop5/static.xml?r1=1.11&r2=1.12&diff_format=u
Index: phpdoc/en/language/oop5/static.xml
diff -u phpdoc/en/language/oop5/static.xml:1.11
phpdoc/en/language/oop5/static.xml:1.12
--- phpdoc/en/language/oop5/static.xml:1.11 Fri Jul 27 09:02:38 2007
+++ phpdoc/en/language/oop5/static.xml Fri Aug 3 09:59:57 2007
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.11 $ -->
+<!-- $Revision: 1.12 $ -->
<sect1 xml:id="language.oop5.static" xmlns="http://docbook.org/ns/docbook">
<title>Static Keyword</title>
@@ -24,15 +24,6 @@
</para>
<para>
- In fact <literal>static</literal> method calls are resolved at compile
- time. When using an explicit class name the method is already identified
- completely and no inheritance rules apply. If the call is done by
- <literal>self</literal> then <literal>self</literal> is translated to
- the current class, that is the class the code belongs to. Here also no
- inheritance rules apply.
- </para>
-
- <para>
Static properties cannot be accessed through the object using the arrow
operator ->.
</para>
@@ -41,6 +32,10 @@
Calling non-static methods statically generates an E_STRICT level warning.
</para>
+ <para>
+ As of PHP 5.2.4, it's possible to reference the class using a variable.
+ </para>
+
<example>
<title>Static member example</title>
<programlisting role="php">
@@ -74,6 +69,9 @@
print Bar::$my_static . "\n";
$bar = new Bar();
print $bar->fooStatic() . "\n";
+
+$classname = "Bar";
+print $classname::$my_static;
?>
]]>
</programlisting>
@@ -91,6 +89,9 @@
}
Foo::aStaticMethod();
+
+$classname = "Foo";
+print $classname::aStaticMethod();
?>
]]>
</programlisting>