Hi James,
The overall problem with Zend_Loader is fairly nuanced and has different
ramifications for people using it in various situations. This problem is
definitely on our radar, and we are thinking about a reasonable solution
that meets the original Zend Framework goal of "extreme simplicity"
while enabling reasonable performance expectations.
Basically there are two competing issues:
1) Zend_Loader::loadClass() and loadFile() do not check to see if a file
is readable before using include_once upon it. This causes a warning to
be issued when the file does not exist, but the extra time for checking
whether the file is readable is not required using this approach. This
is annoying, for example, to people using Zend_Loader with multiple
autoloaders because of the extra PHP warning noise.
2) Error suppression of the above (i.e., with "@") causes any resulting
error to be hidden. This is annoying, for example, when loading a user
class that contains a parse error because the error is harder to find
than if the error had not been suppressed.
In the meantime, there is a modified version of Zend_Loader I made in
the incubator if you want to try it out. I'd be particularly interested
in performance benchmarks, if someone would have time to do such a
thing, but I haven't heard about any such results to date.
Of course, guidance and contributions from community members like you to
help solve these issues are most appreciated! :)
Best regards,
Darby
James Dempster wrote:
Hi All,
I've wasted so much time creating row classes and not finding out about
a parse errors all because line 119 of Zend_Db_Table_Rowset_Abstract and
it's shut up operator.
See http://framework.zend.com/issues/browse/ZF-2724
My application would just silently die without any errors in my php.log
or in the output. Very very frustrating.
Can some one explain to me why they are there, why there is such a
reliance on Zend_Loader. Why can't it just try to create the object and
have any class auto loads deal with it, including user auto loads. Using
Zend_Loader in this way put a reliance on Zend_Loader and with the @
sign break my app without me knowing where the problem occurs.
What can be done to solve this? I've tried removing the @ sign and all
seems to work fine. The same problem exists in other classes.
--
/James