让Zend找到我的自定义应用程序异常

时间:2012-10-04 14:35:09

标签: model-view-controller zend-framework exception

我有一个类似于这个帖子的问题:[throw-exceptions-from-model-view-controller-in-a-zend-framework-application] [1]

我有一个像这样的标准MVC结构:

/application
/myapp
    /controllers
    /forms
    /models
    /exceptions
        Default.php (class Myapp_Exception_Default extends Zend_Exception)

无论我什么时候尝试:

throw new Myapp_Exception_Default();

我明白了:

Fatal error: Class 'Myapp_Exception_Default' not found

我的问题是如何让Zend找到我的自定义例外?我没有找到任何配置选项来声明它。

1 个答案:

答案 0 :(得分:1)

你应该有这样的东西:

boostrap.php

有了这个内容:

...

protected function _initAutoload()
{
    // Add autoloader empty namespace
    $autoLoader = Zend_Loader_Autoloader::getInstance();
    $autoLoader->suppressNotFoundWarnings(true);//http://zend-framework-community.634137.n4.nabble.com/Trouble-using-Gdata-Calendar-td675383.html
    $autoLoader->registerNamespace('Gestionale_');
    $resourceLoader = new Zend_Loader_Autoloader_Resource(
        array(
            'basePath' => APPLICATION_PATH,
            'namespace' => '',
            'resourceTypes' => array(
                'form' =>
                    array(
                        'path' => 'forms/',
                        'namespace' => 'Form_',
                    ),
                'model' =>
                    array(
                        'path' => 'models/',
                        'namespace' => 'Model_'
                    ),
            ),
    ));
    // Return it so that it can be stored by the bootstrap
    return $autoLoader;
}

...

\library\Gestionale\Exceptions\Exception.php

使用此代码

<?php
/**
 * Custom exception class that logs messages
 */
class Gestionale_Exceptions_Exception extends Exception
{
...
}

然后使用

throw new Gestionale_Exceptions_Exception('Bla bla bla');