Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中调用“parent”trait方法?_Php_Oop_Inheritance_Traits - Fatal编程技术网

如何在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); 
    }
}