2017-08-21 52 views
0

我一直無法在symfony中使用DOMDocument。經過深入挖掘,我發現問題可能是我沒有php xml擴展名,但我認爲這很荒謬,因爲儘管沒有能夠使用DOMDocument,但我可以使用Symfony的DOMCrawler,顯然它使用類似於DOMDocument 。那麼,通過履帶的源代碼看後,我發現他們使用像無法在Symfony中使用DOMDocument

$dom = new \DOMDocument('1.0', $charset);  

而不是通常的

$dom = new DOMDocument('1.0', $charset); 

有人不知道這兩者之間的區別,爲什麼一個工程和其他沒有按在Symfony中?

回答

2

因爲在symfony中我們在每個類中使用命名空間。 因爲你已經在你的類中聲明瞭一個名字空間,所以你需要告訴PHP你想要使用的每個類的名字空間。如果你沒有聲明你正在使用的類的名字空間,那麼PHP會認爲這個類與當前類在同一個名字空間中。

因此,在此代碼中的反斜線"\"new \DOMDocument()是否存在要使用「global」命名空間中的DOMDocument類的informe PHP。 如果您想使用Datetime對象,則在實例化Datetime對象時還需要使用反斜槓。

另一種解決方案是使用關鍵字Use進行聲明。 對於爲例:

use \DOMDucment; 

然後在你的代碼,你會不實例化反斜槓:new DomDocument()

+0

這是愚蠢的我沒有意識到這一點。謝謝 – Afunakwa

+0

沒問題。這可以幫助其他人閱讀這個問題。 – Mz1907