gpt4 book ai didi

php - 为什么 'use' 语句不能在包含文件中?

转载 作者:可可西里 更新时间:2023-11-01 00:39:41 24 4
gpt4 key购买 nike

为什么我的 use 语句不能放在 include 文件中?

这很好用:

require_once("PHPMailer_Loader.php");

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

SendEmailWindows("foo@bar.com", "smtp test", "test body");

function SendEmailWindows($emailTo, $subject, $body){
$mail = new PHPMailer;
[... all the rest of the function code]
}

然而,当我尝试将这 2 个 use 语句移动到我的 PHPMailer_Loader.php 脚本(位于文件的最底部)时,它因以下错误而中断:

Fatal error: Class 'PHPMailer' not found in [...]\EmailTester.php on line 12

为了整洁和紧凑,我想将所有内容都移到 include 中,除了函数和调用行。

最佳答案

PHP 手册是这样说的:

The use keyword must be declared in the outermost scope of a file (the global scope) or inside namespace declarations. [...] Importing rules are per file basis, meaning included files will NOT inherit the parent file's importing rules.

"Importing rules are per file basis" 部分是这里的重要部分。

可以在您的include 文件中使用PHPMailer\PHPMailer\PHPMailer,但这仅意味着PHPMailer (无需指定完整类名) 将在您的 include 文件中可用,不在父文件中 (包含您的 include 文件的文件)

tl;博士

您需要在希望应用特定use每个 文件中指定您的use ...; 语句。

关于php - 为什么 'use' 语句不能在包含文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48142874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com