PHP类 - PHPMailer意外'使用'(T_USE)

rum*_*mar -1 php phpmailer

我想使用PHPMailer的类进行测试.在阅读了官方文档后,我看到有两种方法可以包含在我的项目中:

1)使用作曲家

2)复制内容并包含路径

第一个选择,作曲家,我不知道怎么做.第二个选项,复制内容和包含路径看起来更容易.

我用这行代码制作了一个test.php:

<?php

        session_start();

        if(isset($_SESSION['username']) and $_SESSION['username'] != ''){

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

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

            $mail = new PHPMailer;

            echo 'Versión actual de PHP: ' . phpversion();

        }else{
            ?>
            <br>
        <br>
        <div class="row">
              <div class="text-center">
                  <p class='errorLogin'>Inactive session, relogin <a href="login.php">here</a></p>
              </div>
        </div>
<?php
        }?>
Run Code Online (Sandbox Code Playgroud)

此代码仅将clases加载到环境中并生成对象PHPMailer类的实例.

运行后,日志文件显示错误:

[Tue Oct 17 10:17:10.331051 2017] [:error] [pid 3879] [client 192.168.0.184:50679] PHP Parse错误:语法错误,/ var/www/test/sendMail中的意外"使用"(T_USE) .PHP

PHP版本:5.6.30-0 + deb8u1

有人能帮助我吗?

Opt*_*ime 9

问题是您使用use关键字.从文档:

use关键字必须在文件的最外层范围(全局范围)或命名空间内声明中声明.这是因为导入是在编译时完成的,而不是运行时,所以它不能是块作用域.

因此,您的代码应该是这样的:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

session_start();

if (isset($_SESSION['username']) and $_SESSION['username'] != ''){
  [...]
Run Code Online (Sandbox Code Playgroud)


小智 7

<?php 
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
//Your function Code 
?>
Run Code Online (Sandbox Code Playgroud)

在页面顶部而不是在函数内部使用此类。