use*_*925 19 php laravel laravel-5
我正在使用PHP的内置DOMDocument()类来做一些简单的web-scrapping.但是,它适用于我的4.2站点,但不适用于我的5.1(两者都在相同的PHP安装上).
这是错误:
未找到类'App\Http\Controllers\III_Ranks\DOMDocument'
这是我的控制器:
<?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...
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这是一个命名空间问题,但我不知道如何访问DOMDocument()
谢谢你的帮助.
小智 36
在Laravel 5.1中,您必须在类名前加上全局名称空间前缀'\'.
所以你更新的代码:
<?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...
}
}
Run Code Online (Sandbox Code Playgroud)
对我来说,为了解决错误:DOMDocument() class not found.我不得不安装DOM扩展.
如果您使用的是PHP 5:
您可以使用以下命令在Debian/Ubuntu上执行此操作:
sudo apt-get install php5-dom
Run Code Online (Sandbox Code Playgroud)
在Centos/Fedora/Red Hat上:
yum install php-xml
Run Code Online (Sandbox Code Playgroud)
如果您使用的是PHP 7:
对于Ubuntu:
apt-get install php7.0-xml
Run Code Online (Sandbox Code Playgroud)
对于CentOS/Fedora/Red Hat:
yum install php70w-xml
Run Code Online (Sandbox Code Playgroud)
测试在 Laravel 5.4
您可以使用关键字use:
在定义类之前的文件顶部,您可以编写use DOMDocument;而不是new \DOMDocument();
例如:
<?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 {
...
Run Code Online (Sandbox Code Playgroud)
这是什么 '...' ?