Zend framework2 如何在Zend Framework 2中包含第三方库
我正在将应用程序从ZF1迁移到ZF2。我有一个控制器依赖于第三方库“Solarium”Zend framework2 如何在Zend Framework 2中包含第三方库,zend-framework2,autoload,Zend Framework2,Autoload,我正在将应用程序从ZF1迁移到ZF2。我有一个控制器依赖于第三方库“Solarium” namespace Stock\Controller; class BaseController extends AbstractActionController { protected function indexAction() { require_once('Solarium/Autoloader.php'); Solarium_Autoloader::r
namespace Stock\Controller;
class BaseController extends AbstractActionController
{
protected function indexAction()
{
require_once('Solarium/Autoloader.php');
Solarium_Autoloader::register();
“Solarium”位于“vendor”下,在“init_autoloader.php”中我有:
set_include_path(implode(PATH_SEPARATOR, array(
realpath('vendor')
)));
但是,当我查看页面时,出现了一个错误:
Fatal error: Class 'Stock\Controller\Solarium_Autoloader' not found in ...
我尝试在“StandardAutoloader.php”中添加跟踪,发现StandardAutoloader.autoload('Stock\Controller\Solarium\u Autoloader')在运行时被调用
我想知道这是如何发生的,以及如何修复它。谢谢。正如艾丁·哈桑(Aydin Hassan)在评论中所说,制作这部作品最简单的方法是使用Composer。首先,编辑项目根目录中的
composer.json
文件,如下所示:
"require": {
"php": ">=5.3.3",
"zendframework/zendframework": "2.*",
"solarium/solarium": ">=2.4.0"
}
如果您正在使用,则项目的根目录中也会有Composer本身(Composer.phar
)。在这种情况下,您可以这样做:
"require": {
"php": ">=5.3.3",
"zendframework/zendframework": "2.*",
"solarium/solarium": ">=2.4.0"
}
cd/path/to/project&&php composer.phar安装solarium/solarium
或
cd/path/to/project&&php composer.phar安装
否则,只需让Composer在命令行中的任何地方都可用即可。通过执行上述操作,Composer将为您自动加载。在控制器中,您不必担心包含文件,因为使用spl\u autoload\u register
会自动为您添加文件。您只需要使用名称空间。您可以使用以下两种方法之一:
namespace Stock\Controller;
use Solarium\Autoloader;
class BaseController extends AbstractActionController
{
protected function indexAction()
{
Autoloader::register();
}
}
或
正如艾丁·哈桑(Aydin Hassan)在评论中所说,制作这部作品最简单的方法是使用Composer。首先,编辑项目根目录中的
composer.json
文件,如下所示:
"require": {
"php": ">=5.3.3",
"zendframework/zendframework": "2.*",
"solarium/solarium": ">=2.4.0"
}
如果您正在使用,则项目的根目录中也会有Composer本身(Composer.phar
)。在这种情况下,您可以这样做:
"require": {
"php": ">=5.3.3",
"zendframework/zendframework": "2.*",
"solarium/solarium": ">=2.4.0"
}
cd/path/to/project&&php composer.phar安装solarium/solarium
或
cd/path/to/project&&php composer.phar安装
否则,只需让Composer在命令行中的任何地方都可用即可。通过执行上述操作,Composer将为您自动加载。在控制器中,您不必担心包含文件,因为使用spl\u autoload\u register
会自动为您添加文件。您只需要使用名称空间。您可以使用以下两种方法之一:
namespace Stock\Controller;
use Solarium\Autoloader;
class BaseController extends AbstractActionController
{
protected function indexAction()
{
Autoloader::register();
}
}
或
你为什么不使用composer呢?Zend Framework 2与ZF1非常不同。所以这个线程是一个新问题。我刚刚在composer中启用了solarium,并将代码更改为“$client=newSolarium\client($config);”。但仍然存在类似的错误:“致命错误:在“@user1633272”中找不到类'Stock\Controller\Solarium\Client'。您缺少反斜杠。试试这个:
$client=new\Solarium\client($config)代码>。为什么不使用composer的可能重复项?Zend Framework 2与ZF1非常不同。所以这个线程是一个新问题。我刚刚在composer中启用了solarium,并将代码更改为“$client=newSolarium\client($config);”。但仍然存在类似的错误:“致命错误:在“@user1633272”中找不到类'Stock\Controller\Solarium\Client'。您缺少反斜杠。试试这个:$client=new\Solarium\client($config)代码>。上面提到的第一种方法在我的环境中不起作用。错误为“致命错误:在…中找不到类'Stock\Controller\Autoloader'。第二种方法很好。@user1633272对此表示抱歉。我记不清该怎么做了,因为我通常采用最后提到的方法。也许可以尝试使用Solarium\Autoloader
。您上面提到的第一种方法在我的环境中不起作用。错误为“致命错误:在…中找不到类'Stock\Controller\Autoloader'。第二种方法很好。@user1633272对此表示抱歉。我记不清该怎么做了,因为我通常采用最后提到的方法。也许可以尝试使用Solarium\Autoloader
。