2015-07-23 16 views
11

Sto usando la classe integrata DOMDocument() di PHP per fare un semplice web-scraping. Tuttavia, funziona sul mio sito 4.2, ma non sul mio 5.1 (entrambi sono sulla stessa installazione di PHP).Laravel 5.1 PHP DOMDocument() classe non trovata

Ecco l'errore:

Class 'App\Http\Controllers\III_Ranks\DOMDocument' not found

Ecco il mio controller:

<?php 

namespace App\Http\Controllers\III_Ranks; 

use App\Http\Controllers\Controller; 

use Illuminate\Http\Request; 
use Illuminate\Http\Response; 

class RanksController extends Controller 
{ 
    public function getRanks() 
    { 
     $list1 = new DOMDocument(); 
     //etc... 
    } 
} 

Immagino che questo è un problema dello spazio dei nomi, ma non ho idea di come accedere DOMDocument()

Grazie per qualsiasi aiuto

risposta

24

In Laravel 5.1 è necessario inserire il prefisso del nome della classe con il prefisso globale dello spazio dei nomi '\'.

Così il vostro codice aggiornato:

<?php 

namespace App\Http\Controllers\III_Ranks; 

use App\Http\Controllers\Controller; 

use Illuminate\Http\Request; 
use Illuminate\Http\Response; 

class RanksController extends Controller 
{ 
    public function getRanks() 
    { 
     $list1 = new \DOMDocument(); 
     //etc... 
    } 
} 
2

Per me, al fine di risolvere l'errore: DOMDocument() class not found. Ho dovuto installare il DOM extension.

Se si utilizza PHP 5:

È possibile farlo su Debian/Ubuntu utilizzando:

sudo apt-get install php5-dom 

E su CentOS/Fedora/Red Hat:

yum install php-xml 

Se si utilizza PHP 7:

Per Ubuntu:

apt-get install php7.0-xml 

Per CentOS/Fedora/Red Hat:

yum install php70w-xml 
1

testato in Laravel 5.4

è possibile utilizzare parole chiave use:

In cima file prima di definire la classe è possibile scrivere use DOMDocument; anziché new \DOMDocument();

Per esempio:

<?php 

namespace App\Http\Controllers\III_Ranks; 

use App\Http\Controllers\Controller; 

use Illuminate\Http\Request; 
use Illuminate\Http\Response; 

use DOMDocument; 

class RanksController extends Controller { 
...