Matthew,

Zend_Controller_Front.php has the following lines of code on the top instead
of conditionally requiring them in dispatch():

/** Zend_Controller_Action_Helper_ViewRenderer */
require_once 'Zend/Controller/Action/Helper/ViewRenderer.php';

/** Zend_Controller_Plugin_ErrorHandler */
require_once 'Zend/Controller/Plugin/ErrorHandler.php';


For those who don't use ViewRenderer and ErrorHandler, these files still get
included on each page-load unless they are moved into dispatch() to require
them conditionally:

http://framework.zend.com/issues/browse/ZF-2313


Regards,





On 12/14/07, Matthew Weier O'Phinney <[EMAIL PROTECTED] > wrote:
>
> -- Shekar C Reddy < [EMAIL PROTECTED]> wrote
> (on Friday, 14 December 2007, 12:50 PM -0600):
> > I would suggest to incorporate a method that serves as a central
> location to
> > instantiate exception objects - a consistent object-instantiation
> system, if
> > you will. This method could go inside a class that is always
> required/loaded so
> > we don't have to include another file just for this purpose.
> Zend_Loader,
> > maybe? This approach allows us to add more processing/error-handling
> logic to
> > the method in future that ripples across the framework:
> >
> >
> //////////////////////////////////////////////////////////////////////////
> > static function getException( $class, $message = 'ERROR', $code = 0, ...
> )
> >
> //////////////////////////////////////////////////////////////////////////
> > {
> >    self::loadClass( $class );
> >    //
> >      // Or straight require_once for performance, but then format the
> > class-name to instantiate...
> > // require_once( $class );
> >    //
> >    return new $class( $message, $code, ... );
> > }
> >
> ///////////////////////////////////////////////////////////////////////////////
>
> > /
> >
> > Then, from within the code where an exception needs to be thrown, this
> becomes
> > just a simple one-liner, instead of spilling require_once/etc lines of
> code all
> > over the framework:
> >
> > throw Zend_Loader::getException( <class>, <message>, <code>, ... );
>
> There are *no* classes right now that get loaded by every other class;
> doing so introduces unwanted coupling.
>
> > 2. On another note, how about other class-files that get included
> > superfluously? I'm quite sure there are an awful lot of files included
> > in the framework's classes without ever being used. ViewRenderer.php
> > is just an example.
>
> For what it's worth, the ViewRenderer is loaded during dispatch() only
> if the user has not set the 'noViewRenderer' flag; same with the
> ErrorHandler plugin. Users complained about them being loaded, and we
> listened. :-)
>
> > If we really want to reduce the number of included files to improve
> > performance, we need to work on these ones, too. Bottom line - include
> > files only on a need-to-use basis and just-in-time! I, for one, don't
> > want any files loaded that I don't want to use in my application - its
> > just an over-head.
>
> Perhaps you could go and create a list that shows these? I think in most
> cases, we're not doing includes unless needed... with the exception of
> exception classes, but we cannot know unless somebody produces an audit.
>
>
> > On 12/13/07, Shahar Evron < [EMAIL PROTECTED] > 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.
> >
> >     Better suggestions are most welcome!
> >
> >     Thanks,
> >
> >     Shahar.
> >
> >     --
> >
> >     Shahar.
> >
> >
> >
>
> --
> Matthew Weier O'Phinney
> PHP Developer            | [EMAIL PROTECTED]
> Zend - The PHP Company   | http://www.zend.com/
>

Reply via email to