2015-12-30 2 views
1

Я пытаюсь создать экземпляр класса почтовой программы PHP, который я установил с помощью композитора. Класс находится в поставщике \ PHPMailer \ PHPMailer \ class.phpmailer.phpКак включить phpmailer 5.2 с помощью композитора?

-Project 
    -src 
     -SmtpHandler.php 
    -vendor 
    -phpmailer 
     -phpmailer 
      class.phpmailer.php 
    index.php 

Я пытаюсь загрузить этот класс внутри SmtpHandler следующим образом:

<?php 
namespace Fusion; 

require_once __DIR__ . '/../vendor/autoload.php'; 
class SmtpHandler { 

var $mail; 

function __construct() { 
    $this->mail = new PHPMailer; 

моего файл composer.json является самозарядным мои php-классы:

"autoload": { 
    "psr-4": { 
     "Fusion\\": "src" 
    } 

}, 

когда $ this-> mail = new PHPMailer; называется, я получаю сообщение об ошибке Фатальная ошибка: Class «Fusion \ PHPMailer» не найден в /var/www/proj/Project/src/SmtpHandler.php на линии 8

мне нужно использовать поставщика \ PHPMailer Do \ phpmailer \ class.phpmailer? или я использую psr-4 неправильно?

Благодаря

+1

Для дальнейшего использования (когда он выпущен!) PHPMailer 5.4 объявляет пространство имен и использует макет наименования PSR-4. – Synchro

+0

Вам нужно привыкнуть [принимать ответы] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work), которые помогут вам решить ваши проблемы. Вы будете зарабатывать очки, а другие будут рады помочь вам. –

+0

Это более 3 месяцев, когда я был довольно новичком на сайте, как и я. Мне не нужно разыскивать мой профиль, чтобы забрать ошибку, я сделал – Juakali92

ответ

7

Добавить после имен (namespace Fusion;) добавить use PHPMailer as PHPMailer; или когда instanciating сделать следующее: new \PHPMailer;// instanciate from outside the current namespace

Это происходит потому, что PHP пытается создать экземпляр Fusion\PHPMailer из текущего пространства имен.

+0

фантастический, я новичок в использовании композитора, так что это все новое. Но ваш ответ сделал трюк. – Juakali92

+0

Связано ли это с любыми зависимостями, такими как facebook sdk? Или они различаются в зависимости от каждого? – Juakali92

+0

Если вы объявили свое собственное пространство имен да, вы должны добавить обратную косую черту или определить его с помощью 'use' или инициализировать класс с помощью пространства имен:' $ fb = new Facebook \ Facebook ... '. Это beacause Facebook sdk имеет 'Facebook' как пространство имен, так как я читал выше здесь (https://developers.facebook.com/docs/php/Facebook/5.0.0) –

Смежные вопросы