【问题标题】:error in zend framework model creationZend框架模型创建错误
【发布时间】:2013-02-11 11:04:30
【问题描述】:

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

结构

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

我的引导文件包含

 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

如果有人知道,请帮助我。

提前致谢。

【问题讨论】:

  • 为什么不从 ZF2 而不是 ZF1 开始呢?

标签: php zend-framework


【解决方案1】:

几个 cmets/观察:

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

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

  3. 您正在指定应用程序命名空间 Application_。这意味着像application/modelsapplication/servicesapplication/forms 等目录中的所有类都将以Application_Model_Something 的形式命名,而不仅仅是Something。但是由于您已将这些类放在核心模块中,它们将被命名为 Core_Model_Something

  4. 如果你想使用模块,那么你应该在你的application/configs/application.ini 中有一个resources.modules[] = 声明

  5. 通常每个模块都有一个 Bootstrap 类 - 例如命名为 Core_Bootstrap - 扩展 Zend_Application_Module_Bootstrap。这将确保调用模块的标准资源自动加载器。

这应该让你更接近。坦率地说,那里发生了很多事情,所以这不太可能是一个完整的列表。重要的部分是了解系统需要知道什么才能加载不在include_path 上的类(如模型、表单等):命名空间前缀、它需要开始执行的基本路径它的 PSR-0 结构。

【讨论】:

    猜你喜欢
    • 2011-11-17
    • 1970-01-01
    • 2010-11-15
    • 2012-04-23
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    相关资源
    最近更新 更多