如何在 PHP 中调用 'parent' trait 方法?
How to call a 'parent' trait method in PHP?
这是我的代码
use Illuminate\Foundation\Auth\ResetsPasswords;
class PasswordController extends Controller {
use ResetsPasswords;
public function postReset(Request $request){
// do some stuff
// ...
return parent::postReset($request); // <-here is the problem
}
方法 postReset
存在于 ResetsPasswords
中,但我编写的代码正在 Controller
class.[=16= 中查找此方法]
有什么想法吗?
parent::postReset($request)
之所以会报致命错误,是因为其父Controller
class没有postReset
方法。在这种情况下,特征不被视为父特征,即使它实现了 postReset()
方法。
要解决此问题,您可以为其指定一个不同的名称:
class PasswordController extends Controller
{
use ResetsPasswords;
public function postResetPassword(Request $request) // <- giving it a different name
{
// do some stuff
// ...
return $this->postReset($request); // and calling ResetsPasswords::postReset
}
use Illuminate\Foundation\Auth\ResetsPasswords;
class PasswordController extends Controller {
use ResetsPasswords {
ResetsPassword::postReset as traitPostReset;
};
public function postReset(Request $request){
// do some stuff
// ...
return $this->traitPostReset($request);
}
}
这是我的代码
use Illuminate\Foundation\Auth\ResetsPasswords;
class PasswordController extends Controller {
use ResetsPasswords;
public function postReset(Request $request){
// do some stuff
// ...
return parent::postReset($request); // <-here is the problem
}
方法 postReset
存在于 ResetsPasswords
中,但我编写的代码正在 Controller
class.[=16= 中查找此方法]
有什么想法吗?
parent::postReset($request)
之所以会报致命错误,是因为其父Controller
class没有postReset
方法。在这种情况下,特征不被视为父特征,即使它实现了 postReset()
方法。
要解决此问题,您可以为其指定一个不同的名称:
class PasswordController extends Controller
{
use ResetsPasswords;
public function postResetPassword(Request $request) // <- giving it a different name
{
// do some stuff
// ...
return $this->postReset($request); // and calling ResetsPasswords::postReset
}
use Illuminate\Foundation\Auth\ResetsPasswords;
class PasswordController extends Controller {
use ResetsPasswords {
ResetsPassword::postReset as traitPostReset;
};
public function postReset(Request $request){
// do some stuff
// ...
return $this->traitPostReset($request);
}
}