Ошибка Laravel «Класс 'App \ Http \ Controllers \ DateTime' не найден»

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

В заголовке я попытался использовать

use DateTime;

Или

use App\Http\Controllers\DateTime

Но по-прежнему генерирует ту же ошибку пожалуйста, помогите исправить это. заранее спасибо

Используйте класс new \DateTime() или Laravel Carbon

brombeer 29.08.2018 11:37

При использовании use DateTime; в шапке ошибка все равно была Класс App \ Http \ Controllers \ DateTime не найден?

Rafael 29.08.2018 11:44

Да еще не нашлось?

myckhel 29.08.2018 11:46

Я не могу изменить приведенный выше код

myckhel 29.08.2018 11:47

Я смог исправить это, используя пространство имен use DateTime;. Но у меня было 2 дубликата ForgotPasswordController в разных каталогах, поэтому мне пришлось найти контроллер, на который он указывал. Спасибо всем.

myckhel 29.08.2018 15:39
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
22
5
37 605
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

DateTime - это объект PHP, поэтому вы можете объявить его с помощью косой черты перед:

new \DateTime();

Или объявить его перед использованием и создать экземпляр позже:

use DateTime;

class Etc
{
    public function test()
    {
        $datetime = new DateTime();
    }
}
Ответ принят как подходящий

Над определением класса импортируйте класс с помощью оператора use.

use DateTime;

Альтернативой этому является использование полностью определенного пространства имен в вашем коде. С классами PHP в глобальном пространстве имен все это означает одну обратную косую черту перед именем класса:

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

Я предпочитаю первый подход, так как он позволяет сразу увидеть каждый класс, используемый в этом файле.

Добавьте обратную косую черту \ (для определения root namespace)

$dateTime = new \DateTime();

также вы можете использовать классы

use DateTime;
use DatePeriod;
use DateInterval;

Использование нижеприведенных классов работает для меня.

use DateTime;
use DatePeriod;
use DateIntercal;

Другие вопросы по теме