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