在没有骨架的应用程序中包含ZEND框架2.3

时间:2014-08-17 09:09:48

标签: php zend-framework nginx zend-framework2

网上有很多关于包含ZEND的内容,但我仍然不知道如何简单地使用它(没有骨架)(在这种情况下我只想使用Zend\Dom\Query

我想:
1)只需在单个应用程序中包含完整的ZEND 2.3库 或
2)包括单个ZEND 2.3模块

我使用NGINX,但实际上我只想通过PHP包含它。任何提示,提示和/或链接?

我做的是:

include('./library/Zend/Dom/Query.php');
$c = curl_init($u);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($c);  
$dom = new Zend\Dom\Query($html);
$results = $dom->execute('.foo .bar a');
...

错误是: Fatal error: Class 'Zend_Dom_Query' not found in /SOMEDIR/myfile.php on line 12

2 个答案:

答案 0 :(得分:4)

Zend Dom和所有其他Zend Framework 2组件独立于框架本身而开发。所有这些都是单独维护的,并且这些组件分别存在自定义存储库。

我认为使用composer时,没有框架本身使用此组件的最佳方式。我们生活在开源时代,而今年是2014年。您只需要在packagist上搜索,而不是尝试通过手动包含/要求使用Zend Dom(或任何第三方库)代码库。请使用作曲家并按照PSR standards

要将作曲家集成到您自己的应用程序中,请打开控制台,然后输入:

cd /path/to/your/project
php -r "readfile('https://getcomposer.org/installer');" | php

安装后,使用此命令在项目中添加zend-dom依赖项:

php composer.php require zendframework/zend-dom:2.3.*

现在,在代码中的任何位置,您都可以键入new Zend\Dom\Query()来创建新的dom查询实例。 (我假设你已经阅读了autoloading process

答案 1 :(得分:1)

通过PHP包含它的一种简单方法是:

1。确保Zend目录位于您的php include_path上。假设Zend目录位于library文件夹中,您的index.php文件中会出现类似内容:

$path= array();
$path[] = '.';
$path[] = './../library';
$path[] = get_include_path();
$path= implode(PATH_SEPARATOR,$path);
set_include_path($path);

2. 现在首先包含Zend/Loader/StandardAutoloader.php,然后使用它加载其他类。你可以这样做:

require_once 'Zend/Loader/StandardAutoloader.php';
$autoloader = new Zend\Loader\StandardAutoloader(array(
'fallback_autoloader' => true,
 ));
$autoloader->register();

使用$autoloader->register(),每次要调用类时都不需要包含文件。你只需要实现你的课程:

$dom = new Zend\Dom\Query($html);