无法重新声明PHPMailer类

时间:2017-09-07 18:38:48

标签: php wordpress class phpmailer

这很令人困惑,因为我已经检查了其他答案并应用了它们,但我仍然会遇到这个致命的错误。

我在wordpress中使用phpmailer并拥有以下代码:

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

然而,该页面未加载,我收到错误:

  

PHP致命错误:无法在

中重新声明类PHPMailer

(我也试过class_exists('PHPMailer',false))但是这也产生了同样的错误。)

据我所知,通过检查类不存在然后使用require_once我不应该有这个问题。

但我确实......

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:2)

PHPMailer实例已在wordpress中工作。您不需要再次包含库。请查看此链接以供参考

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

答案 1 :(得分:0)

我认为这可能是一个比命名空间更简单的问题:class_exists需要第二个autoload参数,默认为true,这意味着它会自动尝试加载该类,如果它是'尚未加载,可以在include_path中找到它。最终结果是,通过将该参数保留为其默认值,您将有效地加载它两次,因此重新声明错误。试试这个:

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

其他新闻:use composer。它为您管理所有课程加载。即使是琐碎的脚本也是值得的。