我一直无法在symfony中使用DOMDocument。在挖掘之后,我发现问题可能是我没有php xml扩展名,但我认为这很荒谬,因为尽管无法使用DOMDocument,我可以使用Symfony的DOMCrawler,它显然使用类似于DOMDocument的东西。好吧,在查看了Crawler的源代码之后,我发现他们使用了类似的东西
$dom = new \DOMDocument('1.0', $charset);
而不是通常的
$dom = new DOMDocument('1.0', $charset);
有人知道这两者之间的区别,为什么一个有效,另一个不在Symfony?
因为在symfony中我们在每个类中使用命名空间。并且因为您已在类中声明了命名空间,所以您需要通知PHP有关您要使用的每个类的命名空间。如果您没有声明正在使用的类的名称空间,PHP会认为此类与当前类位于同一名称空间中。
所以这段代码中的反斜杠"\"
:new \DOMDocument()
是informe PHP,你想使用“全局”命名空间中的DOMDocument类。如果要使用Datetime对象,则还需要在实例化Datetime对象时使用反斜杠。
另一个解决方案是使用关键字Use
声明。举个例子:
use \DOMDocument;
然后在你的代码中你将实例化没有反斜杠:qazxsw poi