0

我刚开始使用 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

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

提前致谢。

4

1 回答 1

1

一些评论/意见:

  1. 你的方法Bootstrap::_autoload()不会运行。Bootstrap 会自动运行表单的所有方法_initXXX()

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

  3. 您正在指定 appnamespace Application_。这意味着目录中的所有类(如application/models, application/services,application/forms等)都将以 形式命名Application_Model_Something,而不仅仅是Something您所拥有的。但是由于您已将这些类放在核心模块中,它们将被命名为Core_Model_Something.

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

  5. 您通常会为每个模块创建一个 Bootstrap 类 - 例如,命名为Core_Bootstrap-extended Zend_Application_Module_Bootstrap。这将确保调用模块的标准资源自动加载器。

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

于 2013-02-26T05:32:56.153 回答