Php composer的哪个命名空间配置
我试图通过composer使用PHPMailer 我正在为我的应用程序使用命名空间和PSR-4自动加载 我的文件组织是这样的Php composer的哪个命名空间配置,php,composer-php,phpmailer,Php,Composer Php,Phpmailer,我试图通过composer使用PHPMailer 我正在为我的应用程序使用命名空间和PSR-4自动加载 我的文件组织是这样的 -bin -controllers - Controller.php (namespace bin\controllers) -vendor -phpmailer -phpmailer -src PHPMailer.php (namespace HPMailer\PHPMailer) 在composer
-bin
-controllers
- Controller.php (namespace bin\controllers)
-vendor
-phpmailer
-phpmailer
-src
PHPMailer.php (namespace HPMailer\PHPMailer)
在composer.json中,我写了这个
"autoload": {
"psr-4": {"bin\\vendor\\phpmailer\\": "bin/vendor/phpmailer/phpmailer/src/PHPMailer.php"}
}
但是当我使用
<?php
namespace bin\controllers;
use bin\vendor\phpmailer\PHPMailer;
abstract class Controller {
public function __construct()
{
$mail = new PHPMailer();
}
}
你把路径和;在大多数情况下,他们是独立的,但PSR-4和朋友们帮助将一个映射到另一个
PHPMailer仅支持6.0版之后的名称空间,该版本尚未发布,当然您可以使用预发布版本
use bin\vendor\phpmailer\PHPMailer;
应该是:
use PHPMailer\PHPMailer\PHPMailer;
use
关键字用于将实体从另一个名称空间导入当前名称空间-请注意,这在概念上不同于将文件包含在include
/require
中
看起来您在自己的应用程序中也混合了名称空间-通常您会使用基于\
模式的名称空间,因此您的示例控制器可能是:
namespace MyCompany\MyProject;
class MyMailController...
或者,您可以在自己的项目中使用多个名称空间,如下所示:
namespace MyCompany\MyProject\Controllers;
class Mail...
这将定义MyCompany\MyProject\Controllers\Mail
类。我的错误,感谢您快速正确的回答:)