PEAR is archived and read-only

This mirror preserves historical PEAR package releases and metadata so existing references remain available.

Home » Networking » Net_UserAgent_Mobile » Bug #827

Assignment to $this

Details

Submitted2004-02-21 21:18 UTC
Frompear-qa at lists dot php dot net
Assignedkuboa
StatusClosed
PackageNet_UserAgent_Mobile
PHP Version5.0.0b4 (beta4)
OSIrrelevant
Roadmaps(Not assigned)

Comments

[2004-02-21 21: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
}

[2004-03-20 14: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 05: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.