Не удается переопределить класс PHPMailer

Это сбивает с толку, потому что я проверил другие ответы и применил их, но я все еще получаю эту фатальную ошибку.

Я использую phpmailer в WordPress и имею этот код:

if (!class_exists('PHPMailer')) {
require_once(ABSPATH . 'wp-content/uploads/phpmailer/_lib/class.phpmailer.php');
}

Однако страница не загружается, и я получаю сообщение об ошибке:

Неустранимая ошибка PHP: невозможно повторно объявить класс PHPMailer в

(Я также пробовал class_exists (‘PHPMailer’, false)), но это также приводило к той же ошибке.)

Насколько я вижу, проверяя, что класс не существует, а затем используя require_once, у меня не должно быть этой проблемы.

Но я делаю…

Любая помощь приветствуется.

3

Решение

Экземпляр PHPMailer уже работает в WordPress. Вам не нужно снова включать библиотеку. Проверьте эту ссылку для справки

https://codex.wordpress.org/Plugin_API/Action_Reference/phpmailer_init

2

Другие решения

Я думаю, что это, вероятно, более простая проблема, чем пространства имен: class_exists занимает секунду autoload параметр, который по умолчанию равен true, и это означает, что он будет автоматически пытаться загрузить класс, если он еще не загружен, и он может найти его в вашем include_path, Конечным результатом является то, что, оставляя этот параметр в значении по умолчанию, вы фактически загружаете его дважды, что приводит к ошибке объявления. Попробуйте это вместо этого:

if (!class_exists('PHPMailer', false)) {
require_once(ABSPATH . 'wp-content/uploads/phpmailer/_lib/class.phpmailer.php');
}

В других новостях: использовать композитор. Он управляет загрузкой всех ваших классов. Это стоит даже для тривиальных сценариев.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector