2013-04-14 73 views
0

我正在将应用程序从ZF1迁移到ZF2。我有一个控制器取决于第三方库'日光浴室'。如何在Zend Framework中包含第三方库2

namespace Stock\Controller; 
class BaseController extends AbstractActionController 
{ 
    protected function indexAction() 
    { 
     require_once('Solarium/Autoloader.php'); 
     Solarium_Autoloader::register(); 

的 '日光浴室' 下 '供应商' 存在,并在 '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(“股票\控制器\ Solarium_Autoloader”)被称为矮上我。

我想知道这是怎么发生的以及如何解决这个问题。谢谢。

+0

http://stackoverflow.com/questions/1566879/adding-3rd-party-library-to-zendframework –

+0

的可能重复你为什么不使用作曲家? http://wiki.solarium-project.org/index.php/V3:Installation#Getting_Solarium –

+0

Zend Framework 2与ZF1非常不同。所以这个线程是新问题。 – user1633272

回答

3

正如Aydin Hassan在他的评论中写道的,最简单的方法是使用Composer。首先,编辑您的项目的根目录中的composer.json文件看起来是这样的:如果你使用的是Zend Skeleton Application

"require": { 
    "php": ">=5.3.3", 
    "zendframework/zendframework": "2.*", 
    "solarium/solarium": ">=2.4.0" 
} 

,那么你也将有作曲家本身在项目的根目录下(composer.phar)。在这种情况下,你可以这样做:

cd /path/to/project && php composer.phar install solarium/solarium

或者

cd /path/to/project && php composer.phar install

否则只是有随处可作曲家在命令行中。通过这样做,Composer将负责为您自动加载。在您的控制器中,您不应该担心包含文件,因为这会自动为您发送spl_autoload_register。你只需要使用命名空间。您可以使用这两种方法:

namespace Stock\Controller; 

use Solarium\Autoloader; 

class BaseController extends AbstractActionController 
{ 
    protected function indexAction() 
    { 
     Autoloader::register(); 
    } 
} 

或者

namespace Stock\Controller; 

class BaseController extends AbstractActionController 
{ 
    protected function indexAction() 
    { 
     \Solarium\Autoloader::register(); 
    } 
} 
+0

上面提到的第一种方法在我的环境中不起作用。错误是“致命错误:Class'Stock \ Controller \ Autoloader'未找到...”。第二种方法很好。 – user1633272

+0

@ user1633272对不起。我不记得如何去做这件事,因为我通常采用最后提到的方法。也许试试'使用Solarium \ Autoloader'。 – Andy0708

相关问题