sean            Sat Jan 29 01:19:15 2005 EDT

  Modified files:              
    /phpdoc/en/language oop.xml 
  Log:
  document seemingly-odd $this behaviour
  
http://cvs.php.net/diff.php/phpdoc/en/language/oop.xml?r1=1.57&r2=1.58&ty=u
Index: phpdoc/en/language/oop.xml
diff -u phpdoc/en/language/oop.xml:1.57 phpdoc/en/language/oop.xml:1.58
--- phpdoc/en/language/oop.xml:1.57     Sun Jan 23 15:04:35 2005
+++ phpdoc/en/language/oop.xml  Sat Jan 29 01:19:14 2005
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.57 $ -->
+<!-- $Revision: 1.58 $ -->
  <chapter id="language.oop">
   <title>Classes and Objects (PHP 4)</title>
 
@@ -246,6 +246,62 @@
 
    <note>
     <para>
+     The <varname>$this</varname> pseudo-variable is not usually defined if
+     the method in which it is hosted is called statically. This is not,
+     however, a strict rule: <varname>$this</varname> is defined if a method is
+     called statically from within another object, and the value of
+     <varname>$this</varname> is that of the calling object. This is
+     illustrated in the following example:
+     <informalexample>
+      <programlisting role="php">
+<![CDATA[
+<?php
+class A
+{
+    function foo()
+    {
+        if (isset($this)) {
+            echo '$this is defined (';
+            echo get_class($this);
+            echo ")\n";
+        } else {
+            echo "\$this is not defined.\n";
+        }
+    }
+}
+
+class B
+{
+    function bar()
+    {
+        A::foo();
+    }
+}
+
+$a = new A();
+$a->foo();
+A::foo();
+$b = new B();
+$b->bar();
+B::bar();
+?>
+]]>     
+      </programlisting>
+      &example.outputs;
+      <screen>
+<![CDATA[
+$this is defined (a)
+$this is not defined.
+$this is defined (b)
+$this is not defined.
+]]>
+      </screen>
+     </informalexample>
+    </para>
+   </note>
+
+   <note>
+    <para>
     There are some nice functions to handle classes and objects. You might want
     to take a look at the <link linkend="ref.classobj">Class/Object
     Functions</link>.

Reply via email to