Re: Breaking BC and releases

From: Date: Thu, 24 Oct 2002 22:06:42 +0000
Subject: Re: Breaking BC and releases
References: 1  Groups: php.pear.dev 
Request: Send a blank email to pear-dev+get-10261@lists.php.net to get a copy of this message
I don't know if this has been mentioned (my mail server went offline, so I'm still catching up with bounce retrys), but how about doing things the Horde way... in using a ::factory method, which will return either an error (code?), or a reference to the new object, such as. $p = &File_Passwd::factory('.htaccess'); if (File_Passwd::isError($p) { echo $p->getMessage(); } else { $p->modUser('user', 'pass'); $p->close(); } That way you get the convineance of a constructor, without messing up the PEAR error handling. Jon Wood ----- Original Message ----- From: "Mika Tuupola" <tuupola@appelsiini.net> To: <pear-dev@lists.php.net> Sent: Friday, October 25, 2002 2:08 PM Subject: [PEAR-DEV] Breaking BC and releases > > I talked with Rasmus and I'll start maintaining File_Passwd. > There is one thing which I would like to fix, but it will break > BC and I'd like some input from the list what is the proper > way of releasing a BC breaking release. > > Currently lots of things which can cause an error are done > in the constructor (opening and reading files etc). Since you > can't properly use PEAR error handling from constructor > I would like to introduce a load() or init() method which does > all the loading etc. > > Before you would do something like this: > > $p = new File_Passwd('.htaccess'); > $p->modUser('user', 'pass'); > $p->close(); > > After the fix you could do something like: > > $p = new File_Passwd('.htaccess'); > $p->load(); > $p->modUser('user', 'pass'); > $p->close(); > > or if you want the error handling: > > $p = new File_Passwd('.htaccess'); > if (PEAR::isError($p->load())) { > // do error handling > } else { > $p->modUser('user', 'pass'); > $p->close(); > } > > I see two possibilities. > > 1) first make a 0.9 beta release with the original broken > behaviour and then 1.0 release with working error handling but > broken bc and then fix other packages depending on File_Passwd > > Or should the numbers be 1.0 and 2.0 ? > > 2) leave the package as it is and make release only with broken > error handling. Less fuss, but is still broken and it will be > even more harder to fix in the future when there are more > dependencies than now. > > > > Actually browsing through cvs there is quite a lot of code > in PEAR witch broken error handling. For example all > Auth_Container_xxx, some Image_Transform_Driver_xxx, Config > to name few. I think this needs to be addressed if PEAR > is considered "hiqh quality code". > > > > -- > Mika Tuupola > http://www.appelsiini.net/~tuupola/ > > > -- > PEAR Development Mailing List (http://pear.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php >

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