在单机模式下使用 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 Loade
r 文件夹和Loader.php
添加到我的lib
的Zend
文件夹中。最重要的问题是您发布的代码将驻留在哪里?在我的 php 文件中包含的boostrap
类型的文件中?再次感谢
我很难理解您的评论。您的 Zend-Code 到底在哪里并不重要,只要将它添加到包含路径即可。在使用任何 Zend 类之前,您必须加载 Zend_Loader_Autoloader。它可以在您的代码中的任何位置:“在顶部”,在一些惰性自动加载结构中的引导文件中 - 它取决于您使用的系统/框架。例如,如果您使用 symfony1,该代码将进入项目配置类。以上是关于在单机模式下使用 Zend_PDF,如何设置土地类的包含的主要内容,如果未能解决你的问题,请参考以下文章