我刚开始使用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
如果有人知道这一点,请帮帮我。
提前感谢。
答案 0 :(得分:1)
若干评论/意见:
您的方法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
。
如果您想使用模块,那么您应该在resources.modules[] =
application/configs/application.ini
声明
您通常会为每个模块设置一个Bootstrap类 - 例如,Core_Bootstrap
- 名称为Zend_Application_Module_Bootstrap
。include_path
。这将确保调用模块的标准资源自动加载器。
这会让你更接近。坦率地说,那里有很多事情,所以这不太可能是一个完整的清单。关键部分是要了解系统需要知道什么才能加载不在{{1}}上的类(如模型,表单等):名称空间前缀,它需要的基本路径开始执行PSR-0构建。