2017-12-13 18 views
0

mPDFという名前のライブラリ/プラグインを追加しようとしています。ここに私のコードは次のとおりです。名前がすでに使用されているので、クラスmPDFを宣言できません

namespace App\Http\Controllers; 

use App\Http\Controllers\Controller; 

class HomeController extends Controller { 

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

私はエラーを取得しておいてください。

Cannot declare class mPDF, because the name is already in use

私はするrequire_once行をコメントアウトすると、私が手:

Class 'App\Http\Controllers\mpdf\mPDF' not found

mpdf.phpはという名前のクラスを持っていますmPDF。この名前のクラスは1つしかありません。このクラスは私のプロジェクトには他にはありません。同じ名前の他のクラスはありません。

+0

このようにmPDFクラスに名前空間を追加します。 'namespace App \ Http \ Controllers \ mpdf; ' –

+0

クラスファイルにも大文字の名前を付ける必要があります。これは大文字と小文字を区別するファイルシステムを持つOSを実行しているサーバーにコードをデプロイすると頭痛を与える可能性があります –

+0

これを作者にインストールしない理由は何ですか? – lagbox

答えて

1

更新があなたの アプリケーション/ HTTP /コントローラ/ MPDF/mpdf.phpファイル の名前空間は以下のようにファイルの上に何かを置く:あなたのライブラリーのクラスに名前空間を定義した後

namespace App\Http\Controllers\MyPDF; 

ファイルアプリケーション/ HTTP /コントローラ/ MPDF/mpdf.phpファイル、私はrecommenう

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のパッケージ名と同じですので、クラスに適切な名前空間を定義し、同じクラスがある場合は矛盾することなくクラスを含める必要があります。同じクラス名と異なる名前空間で競合が発生することはありません。

+0

これはうまくいきましたが、require_onceをそのままにしておく必要がありましたが、まだ「見つかりません」というエラーが表示されます。 –

+0

require_onceは必要ありません。なぜならuse文とnamespaceがそうするからです。 – webDev

+0

私はまだ "クラス 'App \ Http \ Controllers \ MyPDF \ mPDF'が見つかりません" 私のコードはあなたと同じ(コピー貼り付け)です。 –

1

App/Http/Controllers/mpdf/mpdf.phpファイル内に名前空間があることを確認してください。あなたが名前空間にすでにしているとして必要とされていない上記のコード内

namespace App\Http\Controllers; 

class HomeController extends Controller { 

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

} 

使用use App\Http\Controllers年代を:

namespace App\Http\Controllers\mpdf;

は、その後にコードを変更します。

関連する問題