andrey          Tue Aug 24 18:01:58 2004 EDT

  Modified files:              
    /php-src    README.PHP4-TO-PHP5-THIN-CHANGES 
  Log:
  new incompatibilities. maybe someone from the doc group will update the
  migrating guide. also Derick may add new slides to his talk :)
  
  
http://cvs.php.net/diff.php/php-src/README.PHP4-TO-PHP5-THIN-CHANGES?r1=1.16&r2=1.17&ty=u
Index: php-src/README.PHP4-TO-PHP5-THIN-CHANGES
diff -u php-src/README.PHP4-TO-PHP5-THIN-CHANGES:1.16 
php-src/README.PHP4-TO-PHP5-THIN-CHANGES:1.17
--- php-src/README.PHP4-TO-PHP5-THIN-CHANGES:1.16       Sun Mar 28 04:30:21 2004
+++ php-src/README.PHP4-TO-PHP5-THIN-CHANGES    Tue Aug 24 18:01:58 2004
@@ -77,20 +77,24 @@
 
 9. get_class() starting PHP 5 returns the name of the class as it was
    declared which may lead to problems in older scripts that rely on
-   the previous behaviour - the class name is lowercased.
+   the previous behaviour - the class name is lowercased. Expect the
+   same behaviour from get_parent_class() when applicable.
    Example :
    <?php
    class FooBar {
    }
+   class ExtFooBar extends FooBar{}
    $a = new FooBar();
-   var_dump(get_class($a));
+   var_dump(get_class($a), get_parent_class($a));
    ?>
 
    Output (PHP 4):
    string(6) "foobar"
+   string(9) "extfoobar"
 
    Output (PHP 5):
    string(6) "FooBar"
+   string(9) "ExtFooBar"
    ----------------------------------------------------------------------
    Example code that will break :
    //....
@@ -101,7 +105,51 @@
      //...
    }
    //...
-   Possible solution is to search for get_class() in all your scripts and
-   use strtolower().
+   Possible solution is to search for get_class() and get_parent_class() in
+   all your scripts and use strtolower().
+
+10. get_class_methods() returns the names of the methods of a class as they
+   declared. In PHP4 the names are all lowercased.
+   Example code :
+   <?php
+   class Foo{
+     function doFoo(){}
+     function hasFoo(){}
+   }
+   var_dump(get_class_methods("Foo")); 
+   ?>
+   Output (PHP4):
+   array(2) {
+     [0]=>
+     string(5) "dofoo"
+     [1]=>
+     string(6) "hasfoo"
+   }
+   Output (PHP5):
+   array(2) {
+     [0]=>
+     string(5) "doFoo"
+     [1]=>
+     string(6) "hasFoo"
+   }
+
+11. Assignment $this is impossible. Starting PHP 5.0.0 $this has special
+    meaning in class methods and is recognized by the PHP parser. The latter
+    will generate a parse error when assignment to $this is found
+    Example code :
+    <?php
+    class Foo {
+      function assignNew($obj) {
+        $this = $obj;
+      }
+    }
+    $a = new Foo();
+    $b = new Foo();
+    $a->assignNew($b);
+    echo "I was executed\n";
+    ?>
+    Output (PHP 4):
+    I was executed
+    Output (PHP 5):
+    PHP Fatal error:  Cannot re-assign $this in /tmp/this_ex.php on line 4
 
-   
\ No newline at end of file

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to