无法声明类mPDF,因为该名称已在使用中

时间:2017-12-13 22:59:48

标签: php laravel class mpdf

我正在尝试包含名为mPDF的库/插件。这是我的代码:

const commandMap = { room: { join() { ...} }, chat: { add() { ... } }};
// note this is ES6 syntax

let clientCmd = 'room';
let clientFn = 'join';

commandMap[clientCmd][clientFn]();

我一直收到错误:

  

无法声明类mPDF,因为该名称已在使用中

当我注释掉require_once行时,我得到:

  

未找到类'App \ Http \ Controllers \ mpdf \ mPDF

mpdf.php有一个名为mPDF的类。它只有一个具有此名称的类。这个类在我的项目中没有出现。没有其他类具有相同的名称。

2 个答案:

答案 0 :(得分:3)

更新您的名称空间 App / Http / Controllers / mpdf / mpdf.php 文件 把东西放在文件的顶部,如:

namespace App\Http\Controllers\MyPDF;

在库类文件 App / Http / Controllers / mpdf / mpdf.php 文件中定义名称空间后,将该类包含在控制器中

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Http\Controllers\MyPDF\mPDF;
class HomeController extends Controller {

  public function cert() {
        //require_once base_path('App/Http/Controllers/mpdf/mpdf.php');
        $mpdf=new mPDF();
        return true;
  }
}

我建议不要将库类创建为控制器或内部控制器目录,在/ app /目录中创建库类并提供自己的命名空间。

实际上命名空间与JAVA中的包名称相同,您只需要为您的类定义正确的名称空间,并且如果存在相同的类,则包含您的类而不会发生任何冲突。相同的类名和不同的名称空间不会引起冲突。

答案 1 :(得分:1)

App/Http/Controllers/mpdf/mpdf.php文件中,确保您拥有命名空间。

namespace App\Http\Controllers\mpdf;

然后将您的代码更改为:

namespace App\Http\Controllers;

class HomeController extends Controller {

  public function cert() {
        $mpdf=new mpdf\mPDF();
        return true;
  }

}

上述代码中的使用use App\Http\Controllers不是必需的,因为您已经在命名空间中。