2013-04-14 75 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

相關問題