Net_URL: default argument values override object properties in initialize()

From: Date: Thu, 10 May 2007 22:15:07 +0000
Subject: Net_URL: default argument values override object properties in initialize()
Groups: php.pear.dev 
Request: Send a blank email to pear-dev+get-46723@lists.php.net to get a copy of this message
Hello, sorry for writing to the list, I tried to report this on the issue tracker, but after submitting I got this message on the website: | ERROR: | Critical internal error: could not send email to your address | <minehere>, please write a mail message to the <i>pear-dev</i>mailing | list and report this problem with details. We apologize for the | problem, your report will help us to fix it for future users: No such | handle found, cannot send confirmation email Anyway, I have found and fixed issue/bug with default argument values overriding object properties in initialize() in the CVS sources of Net_URL (running PHP 5.2.1 on Win32 with CVS version of Net_URL, URL.php revision 1.45.) Description: Regarding the revision 1.45 of URL.php there's a showstopper in initialize(): In __construct() you set the object properties and then call the initialize() method with no arguments: $this->url = $url; $this->useBrackets = $useBrackets; $this->initialize(); But initialize() is declared with default argument values: function initialize($url = null, $useBrackets = true) and later you copy the arguments into object properties: $this->useBrackets = $useBrackets; $this->url = $url; So the $url passed to the contructor is not taken into care and the defaults are used. Plus sometimes you refer to the function argument instead of the object property: if (!preg_match('/^[a-z0-9]+:\/\//i', $url)) { In previous revisions (i.e. stable 1.36) everything works fine. Please find attached patch against 1.46 which fixes all the problems, thanks for reviewing. Test code: require_once 'Net/URL.php'; $dsn = 'imap://foo:bar@mail.example.com:143/INBOX'; $net_url =& new Net_URL($dsn); echo $net_url->host; Expected result: mail.example.com Actual result: localhost Thanks.

« previous php.pear.dev (#46723) next »