在单机模式下使用 Zend_PDF,如何设置土地类的包含

Posted

技术标签:

【中文标题】在单机模式下使用 Zend_PDF,如何设置土地类的包含【英文标题】:Using Zend_PDF in a stand alone mode, how to set the include of the land class 【发布时间】:2011-08-02 10:50:32 【问题描述】:

我正在用 php 编写一个小型学校项目。我需要以 pdf 格式显示一些信息并通过邮件发送文件。

当我从库中复制带有 pdf 类文件的 PDF 文件夹时。这是我的文件夹结构

/ /lib /迅速 /.... /Zend /PDF pdf文件 测试文件.php

这里是test_file.php的内容

require_once 'lib/Zend/Pdf.php';
$pdf = new Zend_Pdf();
$pdf->render();

它正在扔这个

( ! ) 致命错误:require_once() [function.require]: 无法打开所需的 'Zend/Pdf/Page.php' (include_path='.;C:\xampp\php\PEAR;C:\ZendFramework- 1.10.8\bin;') 在 C:\xampp\htdocs\schoolproject\lib\Zend\Pdf.php 第 27 行

但我确实注意到所有类都通过引用*** Zend 文件夹包括,甚至是兄弟类前:

require_once 'Zend/Pdf/Page.php';

我对如何处理这个问题有点困惑。我正在考虑自动加载功能或手动更正需要路径以适合我的项目(这会很痛苦)。

绕过它的最佳方法是什么?

感谢您阅读本文。

【问题讨论】:

将项目的库文件夹添加到包含路径:include_path=".:/usr/share/php:/usr/share/pear:/path/to/zf" - via Zend Framework: "Location, Location Location!" 【参考方案1】:

那么,您需要将包含路径配置到 Zend Framework 库文件夹的根目录。

set_include_path(implode(PATH_SEPARATOR, array(
    'c:\ZendFramework-1.10.8\library',
    get_include_path(),
)));

由于 Zend 使用伪名称空间,您需要包含***目录 library/ 而不是 library/Zend

您可能还想使用Autoloader

require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();

它避免了您每次需要“要求”文件来加载类时调用require_once()

【讨论】:

由于该项目将部署在学校服务器上,我宁愿避免将其绑定到我的环境,我更喜欢将所需的库本身包含在 lib 文件夹中,谢谢 无论您使用完整的捆绑库还是独立文件,都需要使用顶层文件夹,因为 ZF 中使用了 require_once 语句。但是,根据您的环境设置包含路径,它会起作用。 这段代码require_once 'Zend/Loader/Autoloader.php'; Zend_Loader_Autoloader::getInstance(); 本身应该放在哪里?谢谢 这实际上取决于您的应用程序,但是,它应该在使用 Zend Framework 组件之前进行设置。如果你有一个前面的 index.php,它可能是放置它的地方。您可能还想把它放在调用 new Zend_Pdf(); 之前【参考方案2】:

您必须注册 ZF 自动装载机。之后,您可以只使用这些类,而自动加载器会解决剩下的问题。

$zf_path = 'PATH/TO/YOUR/LIB/FOLDER';
set_include_path($zf_path.PATH_SEPARATOR.get_include_path());
require_once($zf_path.'/Zend/Loader/Autoloader.php');
$loader = Zend_Loader_Autoloader::getInstance();
$loader->registerNamespace('Zend_');

【讨论】:

您好,感谢您的快速响应。我想我明白了。这意味着我需要将Zend Loader 文件夹和Loader.php 添加到我的libZend 文件夹中。最重要的问题是您发布的代码将驻留在哪里?在我的 php 文件中包含的boostrap 类型的文件中?再次感谢 我很难理解您的评论。您的 Zend-Code 到底在哪里并不重要,只要将它添加到包含路径即可。在使用任何 Zend 类之前,您必须加载 Zend_Loader_Autoloader。它可以在您的代码中的任何位置:“在顶部”,在一些惰性自动加载结构中的引导文件中 - 它取决于您使用的系统/框架。例如,如果您使用 symfony1,该代码将进入项目配置类。

以上是关于在单机模式下使用 Zend_PDF,如何设置土地类的包含的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法让 FPDF/FPDI 或 Zend_Pdf 支持解析大于 1.4 的 PDF?

Docker-单宿主机下的网络模式

HBase单机和集群版部署

UC浏览器关闭阅读模式后如何开启

kafka单机模式部署安装,zookeeper启动

Zookeeper实战之单机模式