2017-02-26 1 views
0

나는 작곡가를 통해 PHPMailer를 사용하려고합니다.작곡가의 네임 스페이스 구성

내 앱 네임 스페이스와 PSR-4 자동 로딩을 사용하고

내 파일 조직이 composer.json에서이

-bin 
    -controllers 
    - Controller.php (namespace bin\controllers) 
    -vendor 
    -phpmailer 
     -phpmailer 
     -src 
     PHPMailer.php (namespace HPMailer\PHPMailer) 

처럼, 내가 쓴이

"autoload": { 
    "psr-4": {"bin\\vendor\\phpmailer\\": "bin/vendor/phpmailer/phpmailer/src/PHPMailer.php"} 
} 

그러나 내가 쓸 때

<?php 

namespace bin\controllers; 

use bin\vendor\phpmailer\PHPMailer; 

abstract class Controller { 

    public function __construct() 
    { 
     $mail = new PHPMailer(); 
    } 
} 

require_once를() : '요구 실패 개방/사용자/토마스/도서관/모바일 문서/COM ~ 사과 ~ CloudDocs/saveProject/빈 /../ 빈/공급 업체/phpmailer나는 치명적인 오류가 발생했습니다 /PHPMailer.php '

클래스를 올바르게 사용하도록 네임 스페이스를 구성 할 수있는 방법은 무엇입니까?

미리 감사드립니다.

답변

0

경로가 섞여 있습니다. namespaces; 대부분은 독립적이지만 PSR-4와 친구들은 서로 맵핑하는 것을 도와줍니다.

PHPMailer는 아직 릴리스되지 않은 버전 6.0부터 네임 스페이스 만 지원합니다. 물론 시험판 버전을 사용할 수도 있습니다.

use bin\vendor\phpmailer\PHPMailer; 

이 될해야 다음 use 키워드는 현재에 다른 네임 스페이스에서 엔티티를 가져 오는 데 사용됩니다

use PHPMailer\PHPMailer\PHPMailer; 

-이 include/require을 가진 파일을 포함 개념적으로 차이가 있습니다.

당신이 너무 자신의 응용 프로그램에 네임 스페이스를 혼합하고 마치

- 일반적으로는 <vendorname>\<projectname> 패턴을 기반으로 네임 스페이스를 사용하는 거라고, 그래서 당신의 예 컨트롤러가 될 수 있습니다

namespace MyCompany\MyProject; 

class MyMailController... 

아니면 할 수 이런 식으로 자신의 프로젝트 내에서 여러 네임 스페이스를 사용합니다 다음 MyCompany\MyProject\Controllers\Mail 클래스를 정의 할

namespace MyCompany\MyProject\Controllers; 

class Mail... 

합니다.

+0

내 실수, 신속하고 정확한 답변 주셔서 감사합니다 :) – user3279327