在不带骨架的应用程序中包含ZEND框架2.3


Include ZEND framework 2.3 in application without skeleton

web上有很多关于包括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

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

我认为使用这些组件最好的方法是不用框架本身,使用composer。现在是2014年,我们生活在开源时代。你所需要做的就是在packagist上进行搜索,而不是试图通过手动包括/要求到代码库中来使用Zend Dom(或任何第三方库)。请使用composer并遵循PSR标准。

要将composer集成到您自己的应用程序中,打开控制台并简单地键入:

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查询实例。(我假设您已经阅读了自动加载过程)

通过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);