PHPMailer et Autoloader
Posté : 05 juin 2016, 00:20
Bonjour,
J'ai une structure MVC, avec un auto-chargement des classes et namespaces.
L'autoloader fonctionne bien.
Maintenant pour envoyer des e-mails, j'aimerai me passer de la fonction mail(), pour utiliser à la place la bibliothèque PHPMailer.
Le problème c'est que quand j'essaie d'instancier PHPMailer, c'est MON autoloader qui essaie de s'en charger, alors qu'il faudrait que ça soit l'autoader de PHPMailer qui le fasse.
Ce que je fais :
Si vous pouvez m'aider, merci à vous.
----------------------------------------------------------------------------------------------------------
Je donne le chemin de quelques fichiers au cas où ce serait utile :
C:\xampp\htdocs\work\monSite\app\Autoloader.php
C:\xampp\htdocs\work\monSite\Vendors\PHPMailer\PHPMailerAutoload.php
C:\xampp\htdocs\work\monSite\public\index.php
et mon autoloader (je ne sais pas si c'est important) :
J'ai une structure MVC, avec un auto-chargement des classes et namespaces.
L'autoloader fonctionne bien.
Maintenant pour envoyer des e-mails, j'aimerai me passer de la fonction mail(), pour utiliser à la place la bibliothèque PHPMailer.
Le problème c'est que quand j'essaie d'instancier PHPMailer, c'est MON autoloader qui essaie de s'en charger, alors qu'il faudrait que ça soit l'autoader de PHPMailer qui le fasse.
Ce que je fais :
namespace App\Controller;
class UsersController extends AppController
{
public function newAccount()
{
...
// j'ai essayé de "require" l'autoloader de PHPMailer juste avant, en espérant que ça le fasse, mais non.
require ROOT . '/Vendors/PHPMailer/PHPMailerAutoload.php';
$mail = new \PHPMailer;
...
}
}
La ligne (226) :
$mail = new \PHPMailer;
me donne cette erreur :
Fatal error: Uncaught Error: Class 'PHPMailer' not found in
C:\xampp\htdocs\work\monSite\app\Controller\UsersController.php:226
C'est la 1ère fois que j'essaie d'utiliser une classe extérieur, et je ne sais pas comment je dois m'y prendre.Si vous pouvez m'aider, merci à vous.
----------------------------------------------------------------------------------------------------------
Je donne le chemin de quelques fichiers au cas où ce serait utile :
C:\xampp\htdocs\work\monSite\app\Autoloader.php
C:\xampp\htdocs\work\monSite\Vendors\PHPMailer\PHPMailerAutoload.php
C:\xampp\htdocs\work\monSite\public\index.php
et mon autoloader (je ne sais pas si c'est important) :
namespace App;
class Autoloader
{
static function register()
{
spl_autoload_register(array(__CLASS__, 'autoload'));
}
static function autoload($class_name)
{
if (strpos($class_name, __NAMESPACE__ . '\\') === 0)
{
$class_name = str_replace(__NAMESPACE__ . '\\', '', $class_name);
require __DIR__ . '/' . $class_name . '.php';
}
}
}