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
Но по-прежнему генерирует ту же ошибку пожалуйста, помогите исправить это. заранее спасибо
При использовании use DateTime; в шапке ошибка все равно была Класс App \ Http \ Controllers \ DateTime не найден?
Да еще не нашлось?
Я не могу изменить приведенный выше код
Я смог исправить это, используя пространство имен use DateTime;. Но у меня было 2 дубликата ForgotPasswordController в разных каталогах, поэтому мне пришлось найти контроллер, на который он указывал. Спасибо всем.






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;
Используйте класс
new \DateTime()или LaravelCarbon