Shahar Evron wrote:
> A while back ago there was an attempt to eliminate the loading of unused
> Exception files / classes by different ZF components. I don't know what
> happened with that discussion, but I think we should do something about
> it.
>
> I've made some profiling of relatively simple ZF-based app (doesn't load
> too many components - mostly the MVC, DB, Config, Registry etc. stuff)
> and I've found some 10 calls to require_once to load an Exception class
> without having a single exception thrown (that I know of - unless some
> ZF code threw an exception and some other ZF component caught it).
>
> 10 redundant include files have quite an impact on performance,
> especially in places where you have no opcode cache installed.
>
> A while back ago I changed Zend_Http_Client to require_once it's
> exception classes only when about to throw an exception, something like:
>
> <?php
> if ($error_happened) {
> require_once 'Zend/Http/Client/Exception.php';
> throw new Zend_Http_Client_Exception('Good news, everyone!');
> }
> ?>
>
> Now this might seem a bit cumbersome - but when considering the fact
> that it's 1 line of code that never gets executed vs. always loading at
> least one aditional file (not to mention cases where you load
> Zend/Http/Client/Adapter/Exception.php which loads
> Zend/Http/Client/Exception.php which loads Zend/Http/Exception.php which
> loads Zend/Exception.php - you get the point) I think it's worth it.
>
> If nobody has a nicer solution to this overweight problem, I suggest all
> component maintainers will start doing the same (this is not my idea and
> I know some already do so).
>
> If you want, I can try to come up with a list of places that need to be
> fixed.
Yes, please, such a list would be very helpful. Would you mind adding
this as list to a new JIRA issue? I'm pretty sure that in the case of
Exception class derivatives, it is decidedly best practice to lazy-load
the class files just before throwing an exception. They are exceptions,
after all, and should only be needed and loaded in exceptional situations.
Thanks, Shahar!
Best regards,
Darby
>
> Better suggestions are most welcome!
>
> Thanks,
>
> Shahar.
>