如何打电话给父母' PHP中的特征方法?

时间:2015-10-14 11:01:50

标签: 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($request); // <-here is the problem
    }

方法postReset出现在ResetsPasswords中,但我写的代码是在Controller类中寻找此方法。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

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); 
    }
}

答案 1 :(得分:1)

parent::postReset($request)发出致命错误的原因是因为其父Controller类没有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
    }