vrana           Wed Apr  6 05:10:50 2005 EDT

  Modified files:              
    /phpdoc/en/language oop.xml 
  Log:
  Constructors - remove PHP 3 stuff, fix description of constructors inherited 
from parent class (bug #22253)
  
http://cvs.php.net/diff.php/phpdoc/en/language/oop.xml?r1=1.61&r2=1.62&ty=u
Index: phpdoc/en/language/oop.xml
diff -u phpdoc/en/language/oop.xml:1.61 phpdoc/en/language/oop.xml:1.62
--- phpdoc/en/language/oop.xml:1.61     Wed Mar  9 06:40:59 2005
+++ phpdoc/en/language/oop.xml  Wed Apr  6 05:10:49 2005
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.61 $ -->
+<!-- $Revision: 1.62 $ -->
  <chapter id="language.oop">
   <title>Classes and Objects (PHP 4)</title>
 
@@ -389,28 +389,19 @@
   <sect1 id="language.oop.constructor">
    <title>Constructors</title>
 
-   <caution>
-    <simpara>
-     In PHP 3 and PHP 4 constructors behave differently. The PHP 4
-     semantics are strongly preferred.
-    </simpara>
-   </caution>
-
    <para>
     Constructors are functions in a class that are automatically
     called when you create a new instance of a class with
-    <literal>new</literal>. In PHP 3, a
-    function becomes a constructor when it has the same name as 
-    the class. In PHP 4, a function becomes a constructor, when
-    it has the same name as the class it is defined in - the
-    difference is subtle, but crucial (see below).
+    <literal>new</literal>. A function becomes a constructor, when
+    it has the same name as the class. If a class
+    has no constructor, the constructor of the base class is being
+    called, if it exists.
    </para>
  
    <informalexample>
     <programlisting role="php">
 <![CDATA[
 <?php
-// Works in PHP 3 and PHP 4.
 class Auto_Cart extends Cart {
     function Auto_Cart() {
         $this->add_item("10", 1);
@@ -435,7 +426,6 @@
     <programlisting role="php">
 <![CDATA[
 <?php
-// Works in PHP 3 and PHP 4.
 class Constructor_Cart extends Cart {
     function Constructor_Cart($item = "10", $num = 1) {
         $this->add_item ($item, $num);
@@ -443,11 +433,9 @@
 }
  
 // Shop the same old boring stuff.
- 
 $default_cart = new Constructor_Cart;
  
 // Shop for real...
- 
 $different_cart = new Constructor_Cart("20", 17);
 ?>
 ]]>
@@ -460,51 +448,6 @@
     <literal>@new</literal>.
    </para>
 
-   <caution>
-    <simpara>
-     In PHP 3, derived classes and constructors have a number of
-     limitations. The following examples should be read carefully
-     to understand these limitations.
-    </simpara> 
-   </caution>
-   
-   <informalexample>
-    <programlisting role="php">
-<![CDATA[
-<?php
-class A {
-    function A() {
-      echo "I am the constructor of A.<br />\n";
-    }
-}
-
-class B extends A {
-    function C() {
-        echo "I am a regular function.<br />\n";
-    }
-}
-
-// no constructor is being called in PHP 3.
-$b = new B;
-?>
-]]>
-    </programlisting>
-   </informalexample>
-
-   <para>
-    In PHP 3, no constructor is being called in the above example.
-    The rule in PHP 3 is: 'A constructor is a function of the same
-    name as the class.'. The name of the class is B, and there is
-    no function called B() in class B. Nothing happens.
-   </para>
-   
-   <para>
-    This is fixed in PHP 4 by introducing another rule: If a class
-    has no constructor, the constructor of the base class is being
-    called, if it exists. The above example would have printed
-    'I am the constructor of A.&lt;br /&gt;' in PHP 4.
-   </para>
-
    <informalexample>
     <programlisting role="php">
 <![CDATA[
@@ -525,13 +468,9 @@
 
 class B extends A
 {
-    function C()
-    {
-        echo "I am a regular function.<br />\n";
-    }
 }
 
-// This will call B() as a constructor.
+// This will call B() as a constructor
 $b = new B;
 ?>
 ]]>
@@ -539,43 +478,27 @@
    </informalexample>
    
    <para>
-    In PHP 3, the function B() in class A will suddenly become a
+    The function B() in class A will suddenly become a
     constructor in class B, although it was never intended to be.
-    The rule in PHP 3 is: 'A constructor is a function of the same
-    name as the class.'. PHP 3 does not care if the function is
+    PHP 4 does not care if the function is
     being defined in class B, or if it has been inherited.
    </para>
    
-   <para>
-    This is fixed in PHP 4 by modifying the rule to: 'A constructor
-    is a function of the same name as the class it is being defined
-    in.'. Thus in PHP 4, the class B would have no constructor function
-    of its own and the constructor of the base class would have been
-    called, printing 'I am the constructor of A.&lt;br /&gt;'.
-   </para>
-   
    <caution>
     <simpara>
-     Neither PHP 3 nor PHP 4 call constructors of the base class 
+     PHP 4 doesn't call constructors of the base class 
      automatically from a constructor of a derived class. It is
      your responsibility to propagate the call to constructors
      upstream where appropriate.
     </simpara>
    </caution>
    
-   <note>
-    <simpara>
-     There are no destructors in PHP 3 or PHP 4. You may use
-     <function>register_shutdown_function</function> instead
-     to simulate most effects of destructors.
-    </simpara>
-   </note>
-   
    <para>
     Destructors are functions that are called automatically
     when an object is destroyed, either with <function>unset</function>
     or by simply going out of scope. There are no destructors
-    in PHP.
+    in PHP. You may use <function>register_shutdown_function</function>
+    instead to simulate most effects of destructors.
    </para>
   </sect1>
 

Reply via email to