我正在尝试将一个外部库(PHP Simple DOM Parser,http://simplehtmldom.sourceforge.net/index.htm)添加到Symfony2项目中。我参加了一个教程,解释了如何将第三方库包含到Symfony2 http://www.kiwwito.com/article/add-third-party-libraries-to-symfony-2。
我设置了一个类文件:
# vendor/phpsimpledom/lib/Phpsimpledom/simple_html_dom.php
require_once __DIR__.'/src/simple_html_dom.php';
class Phpsimpledom_Phpsimpledom extends simple_html_dom_node {
}
并在我的Autoloader(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',
...
),));
任何提示?
谢谢!
答案 0 :(得分:8)
您正在尝试注册命名空间,但您的类没有命名空间。尝试为其添加命名空间或使用RegisterPrefixes()。
BTW:你知道其中一个Symfony组件基本上和php simpledom一样吗?它被称为DomCrawler,它支持xpath和CSS选择器。答案 1 :(得分: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
,因为调用必须包含要运行的命名空间。
希望现在有效。