FYI, I just upgraded to 1.9.5 and the problem continues. Keep in mind,
despite the exception/error, the form still constructs and renders as
CP_Form_Login just fine.
Zend_Exception: File "CP/Form/Login.php" does not exist or class
"CP_Form_Login" was not found in the file in
/home/ajbrown/Projects/CitationPoint2/library/Zend/Loader.php on line
88
# Time Memory Function Location
1 0.0003 112872 {main}( ) ../index.php:0
2 0.0472 4886480 Zend_Application->run( ) ../index.php:34
3 0.0472 4886480 Zend_Application_Bootstrap_Bootstrap->run(
) ../Application.php:358
4 0.0473 4886480 Zend_Controller_Front->dispatch( ???, ??? )
../Bootstrap.php:77
5 0.0643 6773728 Zend_Controller_Dispatcher_Standard->dispatch(
object(Zend_Controller_Request_Http)[19],
object(Zend_Controller_Response_Http)[20] ) ../Front.php:946
6 0.0777 7803104 Zend_Controller_Action->dispatch( string(11)
) ../Standard.php:289
7 0.0778 7810384 AccountController->loginAction( )
../Action.php:513
8 0.0870 8940840 CP_Form::factory( string(5) )
../AccountController.php:22
9 0.0870 8940968 CP_Form::_declareFormClass( string(5) ) ../Form.php:44
10 0.0871 8942096 Zend_Loader_Autoloader::autoload( string(13) )
../Form.php:74
11 0.0872 8944096 call_user_func ( array(2), string(13) )
../Autoloader.php:130
12 0.0872 8944336 Zend_Loader_Autoloader->_autoload( string(13)
) ../Autoloader.php:0
13 0.0872 8944920 call_user_func ( array(2), string(13) )
../Autoloader.php:472
14 0.0873 8945288 Zend_Loader::loadClass( string(13), ??? )
../Autoloader.php:0
On Wed, Nov 4, 2009 at 11:31 AM, A.J. Brown <[email protected]> wrote:
> Just incase it's useful somehow, here's the full config:
>
> http://www.pastie.org/683340
>
> By the way, I'm aware that I shouldn't be registering Doctrine's
> namespace and instead should push the Doctrine autoloader. I'm just
> doing this temporarily until we begin actually leveraging doctrine.
>
> Here is the complete code of the class that's giving me trouble:
>
> http://www.pastie.org/683348
>
> And here's the complete source of the controller where that code is being run:
>
> http://www.pastie.org/683344
>
> On Wed, Nov 4, 2009 at 11:22 AM, A.J. Brown <[email protected]> wrote:
>> Hey Matthew,
>>
>> Thanks for the explanation. I assumed since the error had
>> "Zend_Exception" in it, that it was actually an exception being
>> thrown.
>>
>> Zend_Version::VERSION == '1.9.3'
>>
>> The code in the pastie is literally the only code that ever does
>> anything with the autoloader. This is a new project, and other than
>> some boilerplate controller code, this is the first few lines of code
>> that have been typed. The only other modifications are adding the
>> namespaces to the autoloader, using the built-in method through the
>> application configuration:
>>
>>
>> autoloaderNamespaces.cp = "CP_"
>> autoloaderNamespaces.doctrine = "Doctrine_"
>>
>>
>> It's also strange that the error is not being suppressed by the @ symbol.
>>
>>
>> On Wed, Nov 4, 2009 at 8:57 AM, Matthew Weier O'Phinney
>> <[email protected]> wrote:
>>> -- A.J. Brown <[email protected]> wrote
>>> (on Tuesday, 03 November 2009, 07:59 PM -0500):
>>>> I'm trying to supress errors with the Zend Autoloader, but it's still
>>>> throwing them. In this specific case, I'm dynamically ceating a class
>>>> if it doesn't already exist. I'm calling suppressNotFoundWarnings(
>>>> true ).
>>>>
>>>> Here's my code:
>>>>
>>>> http://www.pastie.org/682603
>>>>
>>>> On line 13, I'm getting a Zend_Exception saying that CP/Form/Login.php
>>>> not found and CP_Form_Login does not exist. Here's that line:
>>>>
>>>> if( @$autoloader->autoload( $class ) ) {
>>>>
>>>> even wrapping it in a Try/Catch doesn't catch the exception. The best
>>>> part is that further down in the code, the class is still declared,
>>>> and the code continues to run.
>>>>
>>>> the CP_ namespace is registered to the autoloader at bootstrap. (I
>>>> confirmed this through debugging).
>>>
>>> You're confusing exceptions with errors. Zend_Loader_Autoloader does not
>>> throw exceptions within its autoload() method (it's considered a bad
>>> practice, and PHP itself behaves badly when it happens); this is why the
>>> try/catch does not work. What's actually happening is that PHP's
>>> include() function is raising a PHP warning when it can't find the
>>> related file in question.
>>>
>>> What *is* odd to me is that the autoloader is not suppressing the errors
>>> when you've specifically requested it do so. I've just tried this
>>> locally with the following:
>>>
>>>
>>> $autoloader->suppressNotFoundWarnings(true);
>>> if (!$autoloader->autoload('Zend_Foo_Bar')) {
>>> echo 'Not found';
>>> exit;
>>> }
>>> echo 'Found';
>>>
>>> With the warnings suppressed, it works as expected; without, I get
>>> the PHP warning, again, as expected.
>>>
>>> So, a few questions:
>>>
>>> * What version of ZF are you using?
>>> * Can you provide *all* code indicating how you've configured the
>>> autoloader?
>>> * Is the "CP_" namespace registered with the autoloader? If not, do you
>>> have another autoloader registered that would be handling it?
>>>
>>> Based on what you've presented, I have to assume that there's some other
>>> configuration issue that's leading to the error.
>>>
>>> --
>>> Matthew Weier O'Phinney
>>> Project Lead | [email protected]
>>> Zend Framework | http://framework.zend.com/
>>>
>>
>>
>>
>> --
>> A.J. Brown
>> web | http://ajbrown.org
>> phone | (937) 660-3969
>>
>
>
>
> --
> A.J. Brown
> web | http://ajbrown.org
> phone | (937) 660-3969
>
--
A.J. Brown
web | http://ajbrown.org
phone | (937) 660-3969