如何解决Zend应用程序模型不会自动加载
| 我首先使用以下模块在称为Api的模块中创建模型 类名/文件名约定:filename: {project}/application/modules/api/models/Account.php
classname: Api_Model_Account
他们愉快地通过了预期的框架自动加载。
我认为其中一些模型会更好,
从组织上讲,在应用程序的模型目录中
可以跨多个模块使用。
我移动了它们并重命名了它们:
filename: {project}/application/models/Account.php
classname: Application_Model_Account
但是,它们不是自动加载的-PHP会抛出class not found
。我已经检查并确认了我的
配置({project}/application/configs/application.ini
):
[production]
appnamespace = \"Application\"
因此,应用程序名称空间为\'Application \',但是
application / models目录未自动加载。
只是为了让事情变得更疯狂-应用程序/插件中的插件正在自动加载。
测试:
<?php
class Application_Model_ExampleTest extends AMH_Test_PHPUnit_ControllerTestCase
{
public function testLoad()
{
$moduleModel = new Api_Model_Product();
$plugin = new Application_Plugin_ModuleErrorControllerSelector();
$applicationModel = new Application_Model_Example();
}
}
class AMH_Test_PHPUnit_ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
public function setUp()
{
$this->bootstrap = new Zend_Application(
APPLICATION_ENV,APPLICATION_PATH . \'/configs/application.ini\'
);
parent::setUp();
}
public function tearDown()
{
$this->resetRequest();
$this->resetResponse();
parent::tearDown();
}
}
组态:
[production]
appnamespace = \"Application\"
bootstrap.path = APPLICATION_PATH \"/Bootstrap.php\"
bootstrap.class = \"Bootstrap\"
includePaths.library = APPLICATION_PATH \"/../library\"
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
phpSettings.date.timezone = \"Australia/Adelaide\"
resources.frontController.controllerDirectory = APPLICATION_PATH \"/controllers\"
resources.frontController.moduleDirectory = APPLICATION_PATH \"/modules\"
resources.frontController.params.displayExceptions = 0
resources.modules[] = \"\"
[staging : production]
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
相关文件夹路径:
<project name>/
application/
models/
Example.php
modules/
api/
models/
Product.php
plugins/
ModuleErrorControllerSelector.php
错误信息:
PHP Fatal error: Class \'Application_Model_Example\' not found in /var/www/accounts.amh.localhost/tests/application/models/ExampleTest.php on line 9
这使用的是Zend Framework 1.10(适用于Ubuntu 10.04的软件包)
解决方法
不知道为什么不这样加载。但是,另一个建议是您可以将模型设置为包含路径。
set_include_path(\'.\'
. PATH_SEPARATOR . \'application/models\'
. PATH_SEPARATOR . get_include_path()
);
,在所有测试中都必须使用此方法,以确保正确引导环境:
public function setUp()
{
$this->bootstrap = new Zend_Application(
APPLICATION_ENV,APPLICATION_PATH . \'/configs/application.ini\'
);
parent::setUp();
}
,在应用程序级别“ 11”中,您可以配置资源加载器:
protected function _initAutoloader(){
$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
\'basePath\' => APPLICATION_PATH,\'namespace\' => \'Application\',\'resourceTypes\' => array(
\'model\' => array(
\'namespace\' => \'Model\',\'path\' => \'models\',),));
}
,就我而言,这全是一个大写字母。
Model_DbTable_User-> Model_DBTable_User修复了此错误。
Model_DbTable_User在我的本地计算机上工作,但不在服务器上工作!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。