2012-01-09 218 views
6

我想將一個外部庫(PHP簡單DOM解析器,http://simplehtmldom.sourceforge.net/index.htm)添加到Symfony2項目。我接受了一個教程,解釋如何將第三方庫包含到Symfony2 http://www.kiwwito.com/article/add-third-party-libraries-to-symfony-2中。將外部庫添加到Symfony2項目

我建立了一個類文件,如:

# vendor/phpsimpledom/lib/Phpsimpledom/simple_html_dom.php 

require_once __DIR__.'/src/simple_html_dom.php'; 

class Phpsimpledom_Phpsimpledom extends simple_html_dom_node { 
} 

和註冊我的課,我自動裝彈機(autoload.php):

$loader->registerNamespaces(array(
... 
'Phpsimpledom' => __DIR__.'/../vendor/phpsimpledom/lib/', 
... 
),)); 

我試圖撥打:

$phpsimpledom = new \Phpsimpledom(); 

但這通過我一個錯誤(致命錯誤:類'simple_html_dom_node'未找到)。

但是:庫的主文件(simple_html_dom.php)由不屬於類的函數組成。

當我嘗試直接使用的文件,它也不起作用:

$loader->registerNamespaces(array(
... 
'Phpsimpledom' => __DIR__.'/../vendor/phpsimpledom/lib/Phpsimpledom/src/simple_html_dom.php', 
... 
),)); 

任何提示?

謝謝!

回答

8

您正在嘗試註冊一個名稱空間,但是您的類沒有名稱空間。嘗試向其添加名稱空間或使用RegisterPrefixes()。

順便說一句:你知道Symfony組件中的一個基本上和php的簡單方法一樣嗎?它被稱爲DomCrawler,它支持xpath和CSS選擇器。

2

我是Symfony2的新手,但正如我所看到的,您不尊重自動裝載機的PSR。

我推測認爲你應該做的:

# /vendor/phpsimpledom/lib/Phpsimpledom/Phpsimpledom.php 

require_once __DIR__.'/src/simple_html_dom.php'; 

class Phpsimpledom_Phpsimpledom extends simple_html_dom_node { 

} 

需要注意的是正確的文件名會/vendor/phpsimpledom/lib/Phpsimpledom/Phpsimpledom.php作爲呼叫必須包括命名空間的工作。

希望它現在有效。