【问题标题】:PHP reports "Cannot redeclare class" in PHPMailerPHP 在 PHPMailer 中报告“无法重新声明类”
【发布时间】:2019-06-30 22:35:52
【问题描述】:

我在这样的脚本中使用 PHPMailer:

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

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

这是可行的,但我还有另一个脚本也需要使用它。当我尝试重新声明它时,我收到以下错误,因为该文件已包含在内...

Cannot declare class PHPMailer\PHPMailer\Exception

我想确保它已被声明,如果没有在这个新页面上加载它。我已经尝试过了,但没有运气......

if (!class_exists("PHPMailer\\PHPMailer\\Exception")) {

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

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

}

【问题讨论】:

  • 你应该使用 require 或 "use" 为什么你同时使用?尝试删除 PHPMailer 的要求。
  • @Eduardo 它们不是相互排斥的,您确实需要两者。
  • 完整的错误信息是什么,它指向之前已经声明过的类?
  • 我从来没有使用过两者的用例。 :( 至少使用 Laravel。
  • 我不需要同时使用这两个脚本,但是在第二个脚本中我想检查它是否已经初始化,然后如果没有运行使用并要求

标签: php phpmailer


【解决方案1】:

这就是require_once 的用途。

require_once 语句与 require 相同,只是 PHP 会 检查文件是否已被包含,如果是,则不包含 (要求)再次。

【讨论】:

    猜你喜欢
    • 2018-02-16
    • 1970-01-01
    • 2013-08-21
    • 2023-04-02
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多