Package home | Report new bug | New search | Development Roadmap Status: Open | Feedback | All | Closed Since Version 1.0.0

Bug #827 Assignment to $this
Submitted: 2004-02-21 16:18 UTC Modified: 2004-08-12 00:41 UTC
From: pear-qa at lists dot php dot net Assigned: kuboa
Status: Closed Package: Net_UserAgent_Mobile
PHP Version: 5.0.0b4 (beta4) OS: Irrelevant
Roadmaps: (Not assigned)    
Subscription  


 [2004-02-21 16:18 UTC] pear-qa at lists dot php dot net
Description: ------------ ## from the PEAR QA team ## ## quality-assurance related ## ## PHP 5 compatibility issue ## Dear package maintainer, your package makes use of the assignement of new values to $this. This methodis possible in PHP 4 but will throw an error with PHP 5 [1]. Please take care of this issue forPHP5 compatibility reasons. Please answer to this bugreport directly through the PEAR bug tracker or the mailinglist pear-qa@lists.php.net . With kind regards, PEAR QA Team [1] http://www.php.net/ChangeLog-5.php#5.0.0b4 Reproduce code: --------------- FILE: '/php/pear/Net_UserAgent_Mobile/Mobile/Common.php' : /php/pear/Net_UserAgent_Mobile/Mobile/Common.php(90): $this = $result; Expected result: ---------------- Solutions: The assignment to $this occurs mostly inside constructors (<Your_Package_Name>()). You should provide an static factory() or singleton() method for this. To provide backwards compatibility you should work around the affected code pieces. This can be done by a version check: if (version_compare(phpversion(), "5.0.0") == -1) { // assign factoried method to this for PHP 4 // $this =& <Your_Package_Name>::factory(); $this =& <Your_Package_Name>::singleton(); } else { // error handling for PHP5 // user has to use the factory()/singleton() method }

Comments

 [2004-03-20 09:09 UTC] kuboa at php dot net
This issue seems to be difficult to solve without BC break. The construction process in Common.php will be changed in the next release.
 [2004-08-12 00:41 UTC] kubo at isite dot co dot jp
This bug has been fixed in CVS. In case this was a documentation problem, the fix will show up at the end of next Sunday (CET) on pear.php.net. In case this was a pear.php.net website problem, the change will show up on the website in short time. Thank you for the report, and for helping us make PEAR better.