On Thu, Feb 26, 2009 at 10:48 PM, Matthew Weier O'Phinney <[email protected]> wrote: > -- till <[email protected]> wrote > (on Thursday, 26 February 2009, 09:52 PM +0100): >> On Thu, Feb 26, 2009 at 9:19 PM, awkaiser >> <[email protected]> wrote: >> > >> > This message is intended for @weierophinney, but feel free to pitch in if >> > you >> > have a solution. :) This might be an easy one for you guys! >> > >> > The short story is that I'm giving Zend_Loader_Autoloader_Resource >> > (incubator) a spin and have run into some unexpected behavior. It seems to >> > load my classes correctly (my page will display with the expected >> > information from the database) but Zend_Loader complains with some >> > warnings: >> > >> > Warning: Zend_Loader::include_once(Projects/Model/Projects.php) >> > [function.Zend-Loader-include-once]: failed to open stream: No such file or >> > directory in /[...]/library/Zend/Loader.php on line 83 >> > >> > Warning: Zend_Loader::include_once() [function.include]: Failed opening >> > 'Projects/Model/Projects.php' for inclusion (include_path='[...]') in >> > /[...]/library/Zend/Loader.php on line 83 >> > >> > Warning: Zend_Loader::include_once(Projects/DbTable/Projects.php) >> > [function.Zend-Loader-include-once]: failed to open stream: No such file or >> > directory in /[...]/library/Zend/Loader.php on line 83 >> > >> > Warning: Zend_Loader::include_once() [function.include]: Failed opening >> > 'Projects/DbTable/Projects.php' for inclusion (include_path='[...]') in >> > /[...]/library/Zend/Loader.php on line 83 >> >> Somewhat related and more a question for Matthew, but is the >> *autoloader* supposed to use include_once? > > It's using include -- as it should be (look at line 83 of Zend_Loader, > as reported above, if you don't believe me; it reads "include $file;"). > > I'm not sure why it's being reported as "include_once". > > We use include() because the _once variant has more of a performance > impact. Internally, we check first to see if the class_exists(), and > only if it doesn't do we attempt to include() it. And yes, I've profiled > and benchmarked both approaches. :)
Certainly. include_once is slower than include. That's why I was surprised the code still showed this, maybe it's an earlier version or whaterver. Btw, class_exists() shouldn't be necessary either since __autoload() is only invoked when a class is not found. So double-checking inside the autoload seems redundant. Till
