Классы PHPMailer - Как загрузить последнюю стабильную версию с GitHub без Composer - PullRequest
0 голосов
/ 16 декабря 2018

Мне поручено обновить внедренные в настоящее время классы PHPMailer версии 5.2.4 до последней стабильной версии этих классов для веб-приложения электронной коммерции, которое переносится с PHP 5.6 на PHP 7.2.

Сайт использует PHPMailer версии 5.2.4 и связанные с ним классы, установленные без использования Composer, без каких-либо проблем в течение многих лет для создания электронных писем о транзакциях, которые отправляются через стороннего поставщика электронной почты SMTP.

Я хотел бы обновить классы PHPMailer 5.2.4 до последней стабильной версии и продолжать использовать классы в коде, не развертывая их через Composer.

Мне известно, что начиная с версии 6.0 PHPMailer, что пространство имен должно быть добавлено в код.

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;

require 'src/Exception.php';
require 'src/PHPMailer.php';
require 'src/SMTP.php';

Я пошел в проект PHPMailer на GitHub и скачал следующие файлы из мастер-ветви GitHub:

https://github.com/PHPMailer/PHPMailer/tree/master/src

src/PHPMailer.php
src/Exception.php
src/SMTP.php

Я добавил необходимыепространства имен для моего существующего кода, который использует эти классы;и я также обновил свой существующий код обработки исключений, который ранее перехватывал исключения типа phpmailerException, чтобы теперь использовать пространство имен класса исключения PHPMailer, а любые существующие ссылки на исключения используют глобальное пространство имен;

...
try {
...
} catch (Exception $e) {
     //$e is an instance of PHPMailer\PHPMailer\Exception
    echo $e->errorMessage();
} catch (\Exception $e) {
    //$e is an instance of the PHP built-in Exception class
    echo $e->getMessage();
}

После выполнения этих обновлений все работало нормально, чтобы генерировать электронные письма в моей среде разработки под управлением PHP версии 7.2.

Я готов развернуть обновление на производственном / живом сервере моего сайта и хотел бы подтвердить, что я использовал последние стабильные полностью протестированные версии классов PHPMailer.

У меня просто несколько глупый вопрос / беспокойство:

При использовании классов PHPMailer без Composer я прочитал несколько руководств, чтобы загрузить эти классы из мастер-ветки проекта PHPMailer GitHub.

Однако я также читал в некоторых руководствах по использованию версии 6.0 PHPMailer.Кроме того, я, кажется, вспоминаю, что где-то читал, что ветвь master не гарантированно стабильна.

МОЙ ВОПРОС: Правильно ли я использовал GitHub Master Branch src чтобы загрузить классы PHPMailer для использования на моем веб-сайте, если мне нужны последние стабильные полностью протестированные версии этих предложений?

Или, возможно, я должен использовать GitHub 6.0 Branch src для загрузки этих файлов классов?

В дополнение к моему замешательству я вижу, что единственная ветвь, которая специально помечена как "стабильная", - это ветка GitHub "5.2 Stable", а ее последняя версия - 5.2.27.

В связаннойобратите внимание, не могли бы вы уточнить следующее в основной ветке:

**src/SMTP.php**  
(has const VERSION = '6.0.6';)    

**src/Exception.php**  
Is there a reason that comments or code in this file does not mention Version 6.0.6?

**src/PHPMailer.php**  
Is there a reason that comments or code in this file does not mention Version 6.0.6?  

Большое спасибо за вашу помощь.

1 Ответ

0 голосов
/ 16 декабря 2018

Это вопрос для меня!

Определенным местом для поиска ответов по обновлению PHPMailer с 5 до 6 является UPGRADING doc , а также этот вопрос который я написал специально для этой ситуации.

Да, эти три файла - все, что вам нужно для обычной отправки почты.Composer становится более значимым только тогда, когда вы используете Oauth, который вводит многочисленные зависимости.

Оглядываясь назад, я должен был вызвать stable branch legacy, чтобы прояснить, что он устарел.Все версии PHP 5 теперь устарели, поэтому никто не должен больше использовать эту ветвь.

Свойства версии были изменены на константы в 6, потому что они, очевидно, постоянны!TBH они в основном служат, чтобы раздражать во время релизов.Основные классы и файл VERSION - единственные, которые содержат строку версии (и все они содержат один?).По большей части номера версий должны представлять интерес только для композитора.Класс исключений не достаточно интересен, чтобы оправдать его.

Это правда, что HEAD главной ветки может быть нестабильным, но помеченные релизы приходят оттуда и должны считаться стабильными.Опять же, это происходит автоматически, если вы используете композитор.Я не рекомендую развертывать версии напрямую из HEAD, но, опять же, именно поэтому вы должны использовать Composer.Даже если вы не хотите запускать composer во время установки или не можете запустить его при развертывании (например, ваши пользователи пользуются общим хостингом), вы должны использовать его при локальном создании установочного пакета, чтобы композитор мог позаботиться о нем.это для вас.

Если вы не поняли из этого, использование композитора действительно является путем наименьшего сопротивления и устраняет большую сложность;вам, вероятно, больше никогда не понадобится писать еще один оператор include / require.

...