Re: extends PEAR
| From: | Justin Patrin | Date: | Sun, 17 Oct 2004 06:58:28 +0000 |
| Subject: | Re: extends PEAR | ||
| References: | 1 | Groups: | php.pear.dev |
| Request: | Send a blank email to pear-dev+get-33903@lists.php.net to get a copy of this message | ||
On Sat, 16 Oct 2004 14:20:13 +0200, Lukas Smith <lsmith@php.net> wrote:
> Hi,
>
> ok so I am pondering lazy loading PEAR.php in MDB2
>
> I) the goal is to load PEAR.php only if needed
> II) to stop extending from PEAR
>
> The problems I need to overcome:
>
> 1) MDB2 uses expectError()/popExpect() internally and it also is a great
> feature to offer in general
> 2) MDB2 uses a destructor method to clean up open transactions
> 3) I think subclassing PEAR_Error is important as otherwise there is no
> way to no what error code "table" is relevant for a given error object
>
> Solutions:
>
> for 1) I could duplicate the necessary code inside MDB2
> for 2) I could use register shutdown for PHP4 (essentially also
> duplicating the functionality)
> for 3) We could separate the PEAR_Error class into its own file
>
> This doesnt seem like too great a solution as a key part is effectively
> code duplication. So what am I really combatting here?
>
> I) most of the problem is easily solved by using a bytecode cache.
> Anyone using PEAR is likely to need to load the class anyways since you
> are likely to be using things like PEAR::isError() inside your code
>
> II) not extending from PEAR should reduce the memory footprint of MDB2.
> Dunno how significant that is. MDB2 is not likely to be instantiated
> several times in parallel anyways. Most people will have one instance,
> maybe two .. very unlikely three. There might be a tiny effect on the
> calling speed of methods due to the additional methods that PEAR adds.
>
> So am I wasting my time?
>
Hmmm, sounds like a good case where upping to PHP5 and using
PEAR_Exception would help. ;-)
--
paperCrane --Justin Patrin--