zend框架模型创建中的错误

时间:2013-02-26 04:54:44

标签: php zend-framework

我刚开始使用zend框架。我在zend中创建了一个项目

结构

 application
     configs
         application.ini
     layouts
     modules
         core
           DB
             Dbclass.php
           Table
         default
           controllers
           views
           forms
     bootstrap.php
 library
 public
 index 

我的bootstrap文件包含

 public function _autoload(){

    set_include_path(
    '/application/modules/core/DB' 
    . PATH_SEPARATOR . 
    '/application/modules/core/Table' 
    . PATH_SEPARATOR . 
    get_include_path());
}
public function _init(){

    $front = Zend_Controller_Front::getInstance();
    $front->setControllerDirectory(array(
    'default' => APPLICATION_PATH.'/modules/default/controllers'
    ));
}

我的application.ini文件包含

 [production]
 phpSettings.display_startup_errors = 0
 phpSettings.display_errors = 0
 phpSettings.date.timezone = "Europe/London"
 ;includePaths.library = APPLICATION_PATH "/../library"
 bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
 bootstrap.class = "Bootstrap"
 appnamespace = "Application"
 ;resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
 resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
 resources.frontController.moduleControllerDirectory = APPLICATION_PATH   "/modules/controllers"
resources.frontController.defaultModule = "default"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

resources.frontController.params.displayExceptions = 0

当我在indexcontroller中创建一个对象

 $new_object = new Dbclass();

显示

时出错
 Fatal error: Class 'Dbclass' not found in D:\xampp\htdocs\pubman\application\modules\default\controllers\IndexController.php on line 16

如果有人知道这一点,请帮帮我。

提前感谢。

1 个答案:

答案 0 :(得分:1)

若干评论/意见:

  1. 您的方法Bootstrap::_autoload()将无法运行。 Bootstrap将自动运行_initXXX()形式的所有方法。

  2. 通常,您不会将模型放在modules/core/DB/*中。您可以将它们放入modules/core/models/*默认资源自动加载器知道在那里查找它们。

  3. 您正在指定appnamespace Application_。这意味着application/modelsapplication/servicesapplication/forms等目录中的所有类都将以Application_Model_Something的形式命名,而不仅仅是Something。 。但是,由于您已将这些类放在核心模块中,因此它们的名称类似于Core_Model_Something

  4. 如果您想使用模块,那么您应该在resources.modules[] =

  5. 中声明application/configs/application.ini声明
  6. 您通常会为每个模块设置一个Bootstrap类 - 例如,Core_Bootstrap - 名称为Zend_Application_Module_Bootstrapinclude_path。这将确保调用模块的标准资源自动加载器。

  7. 这会让你更接近。坦率地说,那里有很多事情,所以这不太可能是一个完整的清单。关键部分是要了解系统需要知道什么才能加载不在{{1}}上的类(如模型,表单等):名称空间前缀,它需要的基本路径开始执行PSR-0构建。