0
下面的代碼有錯誤。我正在使用Laravel 5.3和php 7.0。Laravel 5.3錯誤:從空值創建默認對象
我谷歌它,但仍然不清楚,任何幫助將不勝感激。
ActivationService.php
<?php
namespace App;
use Illuminate\Mail\Mailer;
use Illuminate\Mail\Message;
class ActivationService
{
protected $mailer;
protected $activationRepo;
protected $resendAfter = 24;
public function __construct(Mailer $mailer, ActivationRepository $activationRepo)
{
$this->mailer = $mailer;
$this->activationRepo = $activationRepo;
}
public function sendActivationMail($user)
{
if ($user->activated || !$this->shouldSend($user)) {
return;
}
$token = $this->activationRepo->createActivation($user);
$link = route('user.activate', $token);
$message = sprintf('Activate account <a href="%s">%s</a>', $link, $link);
$this->mailer->raw($message, function (Message $m) use ($user) {
$m->to($user->email)->subject('Activation mail');
});
}
public function activateUser($token)
{
$activation = $this->activationRepo->getActivationByToken($token);
if ($activation === null) {
return null;
}
$user = User::find($activation->user_id);
//Below is line 53.
$user->activated = true;
$user->save();
$this->activationRepo->deleteActivation($token);
return $user;
}
private function shouldSend($user)
{
$activation = $this->activationRepo->getActivation($user);
return $activation === null || strtotime($activation->created_at) + 60 * 60 * $this->resendAfter < time();
}
}
錯誤消息
在ActivationService.php線53 ErrorException:創建缺省對象從空值
53的線上面的代碼是這樣的:
$user->activated = true;
我該如何解決這個問題?
'$ user = User :: find($ activation-> user_id);''可能返回'false'或'null'。你試過傾銷'$ activation-> user_id'嗎?你爲什麼不用'Auth :: user() - > id'來代替? – Mihailo