Laravel 错误 "Class 'App\Http\Controllers\DateTime' not found"

Laravel Error "Class 'App\Http\Controllers\DateTime' not found"

public function recover(Request $request){
    $email = $request->input('email');
    // Create tokens
    $selector = bin2hex(random_bytes(8));
    $token = random_bytes(32);

    $url = sprintf('%s',  route('recover.reset',['selector'=>$selector, 'validator'=>bin2hex($token)]));

    // Token expiration
    $expires = new DateTime('NOW');
    $expires->add(new DateInterval('PT01H')); // 1 hour

    // Delete any existing tokens for this user
    DB::delete('delete * from password_reset where email =?', $email);

    // Insert reset token into database
    $insert = $this->db->insert('password_reset', 
        array(
            'email'     =>  $email,
            'selector'  =>  $selector, 
            'token'     =>  hash('sha256', $token),
            'expires'   =>  $expires->format('U'),
        )
    );

正在尝试实施忘记密码 当电子邮件表单提交给 forgotPasswordController 时 它会产生以下错误

"Class 'App\Http\Controllers\DateTime' not found"

这是控制器的图片上面的代码没有我无法修改它 RecoverPasswordController Image

在 header 我试过使用

use DateTime;

use App\Http\Controllers\DateTime

但仍然产生同样的错误 请帮助修复它。 提前致谢

DateTime 是一个 PHP 对象,因此您可以使用前面的斜杠声明它:

new \DateTime();

或者在使用前声明,稍后实例化:

use DateTime;

class Etc
{
    public function test()
    {
        $datetime = new DateTime();
    }
}

在您的 class 定义之上,使用 use 语句导入 class。

use DateTime;

替代方法是在您的代码中使用完全限定的命名空间。在全局命名空间中使用 PHP classes,这意味着 class 名称前的单个反斜杠:

$expires = new \DateTime('NOW');

我更喜欢第一种方法,因为它可以让您一目了然地看到该文件中使用的每个 class。

添加反斜杠\(定义root namespace

$dateTime = new \DateTime();

你也可以使用 类

use DateTime;
use DatePeriod;
use DateInterval;

通过使用下面的 类 对我有用。

use DateTime;
use DatePeriod;
use DateIntercal;