如何将 PHPMailer 导入到使用命名空间的 class 中?

How to import PHPMailer into a class which uses namespace?

我有以下项目文件夹和文件:(请注意,我想将我的 classes 与库(如 PHPMailer、HTMLPurifier 等)分开)

在我的 Register.php 文件中,我有寄存器 class:

namespace Classes\Register;

class Register
{
    public function register()
    {
        // ...
        $m = new PHPMailer;
        // send email
    }
}

所以,在我的寄存器 class(位于 classes/ 目录)中,我想使用 PHPMailer class(位于上面一个目录,相对于 Register.php 文件,进入 libs/PHPMailer)。如何将 PHPMailer class 包含到 Register.php 文件中?

我试过:

 $m = new \PHPMailer; // to use the class from the global scope, but it doesn't work.

或者,如果我包括 PHPMailerAutoload.php,像这样:

namespace Classes\Register;

require '../libs/PHPMailer/PHPMailerAutoload.php';

// and then into register() method:
$m = new PHPMailer;

我收到一条错误消息:Fatal error: Class 'Classes\Register\PHPMailer' not found

有什么想法吗?非常感谢!

你没有给出为什么这不起作用,因为它是正确的:

 $m = new \PHPMailer;

或者您可以将 class 导入您自己的命名空间:

use PHPMailer;

$m = new PHPMailer;

class名字基本相同

如果两个版本都不起作用,则说明您遇到了不同的问题。