final public function handle(RequestInterface $request)
    {
        $processed = $this->processing($request);

        if ($processed === null) {
            // the request has not been processed by this handler => see the next
            if ($this->successor !== null) {
                $processed = $this->successor->handle($request);
            }
        }

        return $processed;
    }
final public function handle(RequestInterface $request)
    {
        $processed = $this->processing($request);

        if ($processed === null) {
            // the request has not been processed by this handler => see the next
            if ($this->successor !== null) {
                $processed = $this->successor->handle($request);
            }
        }

        return $processed;
    }
final public function handle ( RequestInterface $ request ) { $ processed = $ this -> processing ( $ request ) ; if ( $ processed === null ) { // the request has not been processed by this handler => see the next if ( $ this -> successor !== null ) { $ processed = $ this -> successor -> handle ( $ request ) ; } } return $ processed ; }
This approach by using a template method pattern ensures you that
each subclass will not forget to call the successor

@param RequestInterface $request

@return string|null
This approach by using a template method pattern ensures you that each subclass will not forget to call the successor