2012-01-09 3 views
6

외부 라이브러리 (PHP Simple DOM Parser, http://simplehtmldom.sourceforge.net/index.htm)를 Symfony2 프로젝트에 추가하려고합니다. 제 3 자 라이브러리를 Symfony2에 포함시키는 법을 설명하는 튜토리얼을 가지고 있습니다. http://www.kiwwito.com/article/add-third-party-libraries-to-symfony-2. 내가 노력하고Symfony2 프로젝트에 외부 라이브러리 추가

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

통화 :

$phpsimpledom = new \Phpsimpledom(); 

내가 좋아하는 클래스 파일을 설정 :

# 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)에서 내 수업을 등록

하지만이 작업을 수행 할 때 오류가 발생합니다 (치명적인 오류 : 클래스 'simple_html_dom_node'찾을 수 없음).

그러나 : 라이브러리의 기본 파일 (simple_html_dom.php)은 클래스에 속하지 않는 함수로 구성됩니다. 내가 직접 파일을 사용하려고하면

, 또한 작동하지 않습니다

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

어떤 힌트를?

고맙습니다!

답변

8

네임 스페이스를 등록하려고했지만 클래스에 네임 스페이스가 없습니다. 네임 스페이스를 추가하거나 RegisterPrefixes()를 사용하십시오.

BTW : Symfony 구성 요소 중 하나가 기본적으로 PHP 단순화와 동일한 작업을 수행하고 있다는 것을 알고 계셨습니까? DomCrawler라고하며 xpath 및 CSS 선택기를 모두 지원합니다.

2

Symfony2를 처음 사용했지만 필자는 오토로더의 PSR을 존중하지 않습니다.

난 당신이해야 할 생각을 상정 해요 : 호출이 작동하는 네임 스페이스를 포함해야하기 때문에 올바른 파일 이름이 /vendor/phpsimpledom/lib/Phpsimpledom/Phpsimpledom.php을 것

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

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

class Phpsimpledom_Phpsimpledom extends simple_html_dom_node { 

} 

하는 것으로.

희망 사항.

관련 문제