我刚刚开始使用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
如果有人知道这一点,请帮帮我。
提前谢谢。
几个评论/意见:
-
您的方法
Bootstrap::_autoload()
将不会运行。Bootstrap将自动运行形式为_initXXX()
的所有方法。 -
通常,您不会将模型放在
modules/core/DB/*
中。您可以将它们放在modules/core/models/*
中。默认的资源自动加载器知道要在那里查找它们。 -
您正在指定appnamespace
Application_
。这意味着目录(如application/models
、application/services
、application/forms
等(中的所有类都将以Application_Model_Something
的形式命名,而不仅仅是以Something
的形式命名。但是,由于您已经将这些类放置在核心模块中,它们的名称将类似于Core_Model_Something
。 -
如果你想使用模块,那么你应该在
application/configs/application.ini
中有一个resources.modules[] =
声明 -
通常,每个模块都有一个Bootstrap类,例如
Core_Bootstrap
,用于扩展Zend_Application_Module_Bootstrap
。这将确保调用模块的标准资源自动加载器。
这应该会让你更接近。坦率地说,那里有很多事情在发生,所以这不太可能是一个完整的列表。重要的部分是了解系统需要知道什么才能加载不在include_path
上的类(如模型、表单等(:命名空间前缀,它需要开始执行PSR-0构造的基本路径。