2015-07-23 33 views
11

PHP'nin yerleşik DOMDocument() sınıfını kullanarak basit bir web-scrapping işlemi yapıyorum. Ancak, benim 4.2 sitemde çalışıyor, ancak 5.1'im (her ikisi de aynı PHP kurulumunda). İşte Laravel 5.1 PHP DOMDocument() sınıfı bulunamadı

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

benim denetleyicisi var: Burada

hata var Bunun bir ad konudur anlamaya

<?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... 
    } 
} 

, ama nasıl DOMDocument erişmek için hiçbir fikrim yok()

Teşekkür herhangi bir yardım için.

cevap

24

Laravel 5.1'de, sınıf adını '\' genel ad alanı önekiyle önek eklemelisiniz.

Yani güncellenmiş kod: Benim için

<?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

, sırayla hatayı çözmek için: DOMDocument() class not found. DOM extension'u yüklemem gerekiyordu. Sen kullanarak Debian/Ubuntu üzerinde yapabilirsiniz

:

PHP 5 kullanıyorsanız

sudo apt-get install php5-dom 

Ve Centos/Fedora üzerinde/Red Hat:

yum install php-xml 

Eğer PHP 7:

kullanıyorsunuz Ubuntu için

: CentOS/Fedora/Red Hat için

apt-get install php7.0-xml 

: önce tanımlamak dosyasının en In

:

yum install php70w-xml 
1

anahtar kelimesini use kullanabilirsiniz Laravel 5.4

test edilmiştir sınıf new \DOMDocument();

yerine use DOMDocument; yazabilirsiniz

Örneğin:

<?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 { 
...