Q:

error in abstract should be compatible with

I have abstract class something like this  
protected function update(Request $request, $id)
{
    //function body
}

and extended class like 
protected function update(PageRequest $request, $id)
{
    //function body
}

injected PageRequest extended from Request 
<?php

namespace App\Http\Requests;

use App\Helpers\Helpers;
use App\Http\Requests\Request;

class PageRequest extends Request
{
    //function body
}

I get this error 

Declaration of App\Http\Controllers\PagesController::update() should
  be compatible with
  App\Http\Controllers\MasterController\CrudController::update(App\Http\Requests\Request
  $request, $id)

I know to pass all of the arguments and  access same for update() methods and I think I do it correctly.  

A:

Correct way to do this:
class Request implements RequestInterface
class PageRequest extends Request

And the function :
protected function update(RequestInterface $request, $id)

