【问题标题】:Zend_Application_Bootstrap_Bootstrap doesn't load modelsZend_Application_Bootstrap_Bootstrap 不加载模型
【发布时间】:2011-05-29 14:08:35
【问题描述】:

我正在使用 Zend_Application_Bootstrap_Bootstrap,但框架无法加载模型。

Index.php

define('ROOT_PATH', realpath(dirname(dirname(__FILE__))));
define('APP_PATH', realpath( ROOT_PATH . '/application'));

set_include_path(realpath(ROOT_PATH . '/library') . PATH_SEPARATOR . get_include_path());

require_once 'Zend/Application.php';
$app = new Zend_Application('dev', APP_PATH . '/configs/application.ini');
$app->bootstrap()->run();

Application.ini

bootstrap = APP_PATH "/Bootstrap.php"

phpSettings.display_errors = on
phpSettings.display_startup_errors = on
phpSettings.error_reporting = E_ALL|E_STRICT
phpSettings.date.timezone = "Europe/London"

resources.frontController.controllerDirectory = APP_PATH "/controllers"
resources.frontController.throwExceptions = on
resources.view.encoding = "UTF-8"
resources.view.contentType = "text/html;charset=utf-8"
resources.view.doctype = "XHTML1_STRICT"
resources.layout.layoutPath = APP_PATH "/views/layouts"
resources.layout.layout = "layout"
resources.db.adapter = "Pdo_Mysql"
resources.db.params.host = "localhost"
resources.db.params.dbname = "foo"
resources.db.params.username = "user"
resources.db.params.password = "password"
resources.db.params.charset = "utf8"

Bootstrap.php:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
}

文件夹树:

Myproject->
/application
   /configs
   /controllers
   /models
      /Mytest.php
   /views
   Bootstrap.php
/public
   index.php

问题: 我试图在控制器中创建新的 Mytest(),但我得到“在...中找不到类” 当我添加到引导 Zend_Loader::loadClass('Mytest', APP_PATH . '/models/') 一切正常。

我的问题是,如何通过 application.ini 设置 Zend_Application_Bootstrap_Bootstrap 以自动加载模型文件夹?

谢谢。

【问题讨论】:

    标签: zend-framework config autoload bootstrapping


    【解决方案1】:

    默认情况下,模型类在 ZF 中的“应用程序”命名空间下命名。 所以你的班级将被命名为'Application_Model_Mytest'

    您可以通过将其添加到 application.ini 来设置默认命名空间“Application”

    appnamespace = "Application"
    

    【讨论】:

    • 谢谢,它成功了。但是有可能以旧方式命名模型类吗?我的意思是我不想使用前缀 Application_Model_。尝试设置(但仍需要前缀 Model_):appnamespace = "Application" 我之前使用过旧的 zend bootstrap(仅包含 class Bootstrap {}),并且有可能。
    • 要自动加载位于文件application/models/MyModel.php 中的名为MyModel 的类,您可以将application/models 文件夹添加到您的include_path 并将标准自动加载器设置为备用自动加载器。但至少以一些伪命名空间为前缀 - 无论是完整的 Application_Model_ 还是只是 Model_ 仍然让我觉得这是一个好习惯。
    猜你喜欢
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    相关资源
    最近更新 更多