gpt4 book ai didi

php - Zend 应用程序模型不会自动加载

转载 作者:可可西里 更新时间:2023-10-31 23:34:26 25 4
gpt4 key购买 nike

我开始使用名为 Api 的模块中的模型,使用以下代码类名/文件名约定:

filename:  {project}/application/modules/api/models/Account.php
classname: Api_Model_Account

他们很高兴按预期通过框架自动加载。

我决定其中一些模型会更好,从组织上讲,在应用程序的模型目录中可以跨多个模块使用。

我移动了它们并重命名了它们:

filename:  {project}/application/models/Account.php
classname: Application_Model_Account

但是,它们不是自动加载的 - PHP 抛出一个找不到类。我已经检查并确认我的配置({project}/application/configs/application.ini):

[production]
appnamespace = "Application"

因此,应用程序命名空间是“Application”,但是application/models 目录没有被自动加载。

只是为了让事情变得更疯狂 - application/plugins 中的插件正在自动加载。

测试:

<?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()
);

关于php - Zend 应用程序模型不会自动加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6104699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com