Laravel错误 "Class 'App\Http\Controllers\DateTime'未找到"

28
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

在头部我已经尝试使用

use DateTime;

或者

use App\Http\Controllers\DateTime

但仍会产生相同的错误,请帮忙修复。提前致谢。


3
请使用new \DateTime()或Laravel的Carbon类。 - brombeer
当您在头部使用 use DateTime; 时,错误仍然是 Class 'App\Http\Controllers\DateTime' not found 吗? - Rafael
是的,它仍然没有被找到吗? - myckhel
我无法修改上面的代码。 - myckhel
1
我使用命名空间 use DateTime; 成功解决了问题,但是我在不同的目录中有两个重复的 ForgotPasswordController,所以我必须找到它指向的控制器。谢谢大家。 - myckhel
4个回答

55
在你的类定义上方,使用use语句导入该类。
use DateTime;

另一种方法是在代码中使用完全限定的命名空间。对于PHP类而言,如果它们位于全局命名空间中,则只需要在类名之前加上一个反斜杠:

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

我更喜欢第一种方法,因为它可以让你一眼看到文件中使用的每个类。


$currentTime = new \DateTime('now'); 像这样定义直接可以正常工作。 - Mohamed Raza

4

DateTime是一个PHP对象,因此您可以在其前面使用斜杠进行声明:

new \DateTime();

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

use DateTime;

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

4

添加反斜杠\(定义根命名空间

$dateTime = new \DateTime();

您可以使用类(classes)来实现此功能。
use DateTime;
use DatePeriod;
use DateInterval;

-1

使用以下类对我有效。

use DateTime;
use DatePeriod;
use DateIntercal;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接