如何在PHP中调用“parent”trait方法?
这是我的密码如何在PHP中调用“parent”trait方法?,php,oop,inheritance,traits,Php,Oop,Inheritance,Traits,这是我的密码 use Illuminate\Foundation\Auth\ResetsPasswords; class PasswordController extends Controller { use ResetsPasswords; public function postReset(Request $request){ // do some stuff // ... return parent::postReset($
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中,但我编写的代码正在控制器类中查找此方法
有什么想法吗?parent::postReset$请求发出致命错误的原因是其父控制器类没有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);
}
}