【问题标题】:Loading zend component from service/model从服务/模型加载 zend 组件
【发布时间】:2011-11-12 12:11:06
【问题描述】:

如果我想从实体或服务调用 zend 组件类,则会收到以下错误:

警告:require(../library/\LG\Services\Zend_Db_Table.php) [function.require]: 无法打开流:C:\Users\Demos\Example\library\Doctrine 中没有这样的文件或目录\Common\ClassLoader.php 第 148 行

我正在尝试使用这个: $db = Zend_Db_Table::getDefaultAdapter();

我认为存在某种自动加载器冲突? 该服务正在使用以下命名空间 命名空间 LG\Services;

我怎样才能使它正常工作?

谢谢

【问题讨论】:

  • 听起来您的自动加载器配置不正确,或者您的代码使用了命名空间,而您忘记在 ZF 类名称前加上 \ - 但没有更多信息,很难给出更具体的信息。
  • 实际上我的服务确实使用命名空间 (LG\services) 前缀 ZF 类与 \ 是什么意思?我需要为这样的调用配置一个特殊的自动加载器吗?顺便说一句:我为服务/实体注册了一个 Doctrine ClassLoader

标签: php zend-framework doctrine doctrine-orm


【解决方案1】:

要么将其放在脚本顶部的命名空间声明下

use \Zend_Db_Table;

或在类前加上反斜杠,例如

$db = \Zend_Db_Table::getDefaultAdapter();

这两种方法都通知 PHP Zend_Db_Table 类存在于全局命名空间中。没有它,PHP 将假定该类存在于当前命名空间 (\LG\Services) 中。

【讨论】:

  • 谢谢你的作品。顺便说一句,文档在哪里?我的意思是我必须把“使用\Zend_FOO”或backlask。我已经阅读/使用该框架一周,但还没有发现
  • @dimirc 这不是 ZF 特定的,而是核心 PHP。见php.net/manual/en/language.namespaces.rules.php
猜你喜欢
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
  • 2019-05-07
  • 2013-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多