Я использую PHPMailer и хочу расширить класс, чтобы предварительно установить некоторые значения. У меня настроена автозагрузка, поэтому мне не нужно запрашивать файл перед его вызовом. Я не хочу, чтобы фактические настройки находились в /var/www/classes/myPHPMailer.php
, поскольку у меня есть два сервера с разной конфигурацией, поэтому найдите настройки в другом файле, который Git игнорирует. Итак, это выглядит примерно следующим образом.
Основной файл
<?php
function __autoload($class)
{
if(file_exists('/var/www/classes/'.strtolower($class).'.php'))
{require_once '/var/www/classes/'.strtolower($class).'.php';}
}
$mailer=new myPHPMailer(true);
//...
$mailer->send();
?>
Имя файла: /var/www/classes/myPHPMailer.php
<?php
require_once ('/var/www/private/email.php');
class myPHPMailer extends myPHPMailer_temp {}
?>
Имя файла: /var/www/private/email.php
<?php
require_once ('/var/www/other_classes/PHPMailer/PHPMailerAutoload.php');
class myPHPMailer_temp extends PHPMailer {
public function __construct($allow_exceptions=false){
$this->isSMTP();
$this->SMTPDebug = 0;
$this->Host = "smtp.gmail.com";
$this->Port = 587;
$this->SMTPSecure = "tls";
$this->SMTPAuth = true;
$this->Username = "[email protected]";
$this->Password = "Password";
}
}
?>
Я получаю Fatal error: Class 'SMTP' not found in /var/www/other_classes/PHPMailer/PHPMailer/class.phpmailer.php on line 1173
Если я require_once /var/www/private/email.php;
и напрямую вызываю myPHPMailer_temp
, я не получаю ошибку.
Как расширить этот класс при использовании автозагрузчика? Кроме того, как я могу просмотреть, в каких каталогах PHP будет искать? Перед строкой 1173 ($this->smtp = new SMTP;
) я хочу просмотреть каталоги, в которых он просматривается, чтобы устранить неполадки.
Спасибо
TempPhpMailer
или что-то в этом роде. Просто, чтобы это было последовательно. :) - person Seer   schedule 06.06.2014