【问题标题】:Zend Framework how to add pathZend Framework如何添加路径
【发布时间】:2012-04-08 06:24:41
【问题描述】:

您好,我在尝试包含任何标准库时遇到问题。我已经将 Zend 文件夹导入到这个路径中

/project
    /library
        /

这是我的脚本:

 require_once 'Zend/Db/Table/Abstract.php';

 require_once APPLICATION_PATH.'/models/ContentNode.php';

class Application_Model_Page extends Zend_Db_Table_Abstract
{


    public function createPage ($name, $namespace, $parentId = 0)
    {
        //create the new page
        $row = $this->createRow();
        $row->name = $name;
        $row->namespace = $namespace;
        $row->parent_id = $parentId;
        $row->date_created = time();
        $row->save();
        // now fetch the id of the row you just created and return it 
        $id = $this->_db->lastInsertId();
        return $id;
    }

这是我收到的错误消息

警告:include_once(Zend\Db\Table\Abstarct.php) [function.include-once]:无法打开流:没有这样的文件或 目录在 C:\Zend\Apache2\htdocs\zendproject\library\Zend\Loader.php 在第 146 行

【问题讨论】:

  • ZEND 路径包含在哪里?
  • 其实我安装了zend server,所以包含在内。
  • 如果您安装了 Zend 服务器,则没有理由将 ZF 移动到您的应用程序路径。您的 php.ini 应该已经将它作为 include_path 的一部分,因此它可以正常工作。在 php.ini 的底部查找 [Zend] include_path=".;C:\Zend\ZendServer\share\ZendFramework\library" 方式。
  • 请为这个应用发布你的application.ini和bootstrap.php,我觉得问题就在那里。
  • 从引导程序中删除 _initAutoload()。在 ZF 1.11 下,此应用程序不需要它。如果你把它留在里面,你将尝试复制和覆盖默认的自动加载器。您需要做的就是添加到您的 application.ini autoloaderNamespaces[] = "CMS_"

标签: php zend-framework


【解决方案1】:

根据您的错误,您的'abstract'拼写错误。

Warning: include_once(Zend\Db\Table\Abstarct.php) [function.include-once]:
 failed to open stream: No such file or directory in
 C:\Zend\Apache2\htdocs\zendproject\library\Zend\Loader.php on line 146

如果您将 Zend 框架用作 mvc 应用程序,则不需要在模型中添加包含文件。自动加载器应自动包含所需的文件。
确保您的 application.ini 包含以下行:
includePaths.library = APPLICATION_PATH "/../library"
我不记得当 ZF 在库中时是否需要添加命名空间,所以我假设它是必需的。您可以尝试将autoloaderNamespaces[] = "Zend_" 行添加到您的application.ini 中,这不会有任何影响,并且可能有助于确保包含Zend 库。 以便正确包含库。然后您的库文件夹应如下所示:

/project_path
    /library
        /Zend

看起来您正在运行“Pro Zend 框架技术”一书中的代码。本书使用 Zend Framework 1.8 版。您可能正在使用 ZF 1.11。如果是这样,则需要注意几件事,因为自 1.8 版以来已经发生了一些变化。如果您是 ZF 的新手,这不应该是您的第一本书,因为它会让您发疯,如果您熟悉 ZF,它会包含一些很棒的信息。

我有这本书的更新代码,所以如果你需要更多帮助...

【讨论】:

  • 好耶!我没见过abstarct
  • RockyFord:感谢您提供有用的反馈,这是真的,我正在尝试遵循这个“Pro Zend 框架技术”。这本书真的让我发疯了。尤其是大多数时候。我也有源代码。但是,没有任何变化。而且,我还有这个问题。我只想提一下,我是 zend 框架的新手。到目前为止,我尝试了您提到的所有内容。事情不顺利
  • 你有没有试过那个源代码。你成功了多少?
  • 我想我几乎完全通过了它。我的代码,我自己适配了ZF 1.11,所以不会和书上一模一样但是很接近....Drop Box link to Zip
【解决方案2】:
set_include_path(get_include_path() . PATH_SEPARATOR . 'ZEND/FRAMEWORK/PATH');

【讨论】:

  • 这个问题只有在我将它包含在模型文件中时才会发生。你向我展示的那个我是用这种方式做的, set_include_path(dirname(FILE).PATH_SEPARATOR.get_include_path());这是正确的做法吗
  • 请在require_once 'Zend/Db/Table/Abstract.php';之前做一个print_r(get_include_path());
  • C:\Zend\Apache2\htdocs\zendproject\application/../library;C:\Zend\Apache2\htdocs\zendproject\library;C:\Zend\Apache2\htdocs\zendproject\ public;.;C:\Zend\ZendServer\share\ZendFramework\library
  • C:\Zend\Apache2\htdocs\‌​zendproject\library\Zend\Db\Table\Abstract.php 存在吗?
  • 找不到路径,我猜是这里的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-27
  • 2018-11-22
  • 2012-04-13
相关资源
最近更新 更多