2017-12-13 6 views
0

mPDF라는 라이브러리/플러그인을 포함하려고합니다.이름이 이미 사용 중이기 때문에 클래스 mPDF를 선언 할 수 없습니다.

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

mpdf.php라는 이름의 클래스가 : 나는 require_once를 라인을 주석 때

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

, 내가 얻을 : 나는 오류가 계속

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; 
    } 
} 

: 여기 내 코드입니다 mPDF. 이 이름을 가진 클래스가 하나뿐입니다. 이 클래스는 내 프로젝트에서 다른 곳에 나타나지 않습니다. 다른 클래스에는 같은 이름이 없습니다.

+0

이와 같이 mPDF 클래스에 네임 스페이스를 추가하십시오. '네임 스페이스 App \ Http \ Controllers \ mpdf; ' –

+0

클래스 파일의 이름도 대문자로 지정해야합니다. 이것은 대소 문자를 구별하는 파일 시스템 –

+0

과 함께 OS를 실행하는 서버에 코드를 배포 할 때 두통을 줄 수 있습니다.이 파일을 작곡가와 함께 설치하지 않으면 자동으로로드됩니다. – lagbox

답변

1

업데이트합니다 앱/HTTP/컨트롤러/mpdf/mpdf.php 파일 같은 파일의 상단에 뭔가를 넣어의 이름 공간 : 라이브러리 클래스의 이름 공간을 정의한 후

namespace App\Http\Controllers\MyPDF; 

앱/HTTP/컨트롤러/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; 
    } 
} 
내가 recommen 것

같은 컨트롤러에 클래스를 포함 컨트롤러 또는 내부 컨트롤러 디렉토리로 라이브러리 클래스를 만들지 말고/app/디렉토리에 라이브러리 클래스를 만들고 자신의 네임 스페이스를 제공하십시오.

사실 네임 스페이스는 자바의 패키지 이름과 동일하므로 클래스에 적절한 네임 스페이스를 정의하고 동일한 클래스가 있으면 충돌없이 클래스를 포함하면됩니다. 동일한 클래스 이름과 다른 이름 공간이 충돌을 일으키지 않습니다.

+0

require_once를 그대로 두어야 했는데도 제대로 작동하지 않았지만 오류가 발생했습니다. –

+0

당신은 require_once가 필요하지 않습니다. 왜냐하면 use 문과 네임 스페이스가 그렇게 할 것이기 때문입니다. – 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 's의 :

namespace App\Http\Controllers\mpdf;

그런 다음에 코드를 변경합니다.

관련 문제