实现接口时的可选参数用法

I am making use of the laravel orm component and observed the following when i deployed the life server.

i got the error

Declaration of Illuminate\Database\Eloquent\Collection::toJson() 
must be compatible 
with Illuminate\Support\Contracts\JsonableInterface::toJson($options = 0) 

I deployed on an ubuntu server that has php v5.4.6 installed. Didnt get this while working on my local machine that has php v5.3.5 installed.

The interface declaration is as below

public function toJson($options = 0);

while the abstract class implementation is

public function toJson()
{
    return json_encode($this->toArray());
}

I didnt think this would be a problem since the interface declaration has its parameter as optional and the abstract class implements it without requiring the parameter.

Is this a thing with php v5.4 and what advantage does it offer?

Also, what is the best approach to fixing this? The interface is implemented by a lot of classes so I am trying not to break dependencies; will you advice downgrading my php version on the life server?

In PHP 5.4 a class implementation must match the signature of the abstract or interface.

The interface accepts an argument $options, whilst your implementation does not. This is likely causing the error.

http://www.php.net/manual/en/language.oop5.abstract.php

Just update your toJson() method to accept the $options argument.