kay*_*fun 0 php interface laravel
我正在使用laravel orm组件,并在部署生命服务器时观察到以下内容.
我收到了错误
Declaration of Illuminate\Database\Eloquent\Collection::toJson()
must be compatible
with Illuminate\Support\Contracts\JsonableInterface::toJson($options = 0)
Run Code Online (Sandbox Code Playgroud)
我部署在安装了php v5.4.6的ubuntu服务器上.在安装了php v5.3.5的本地机器上工作时没有得到这个.
接口声明如下
public function toJson($options = 0);
Run Code Online (Sandbox Code Playgroud)
而抽象类的实现是
public function toJson()
{
return json_encode($this->toArray());
}
Run Code Online (Sandbox Code Playgroud)
我不认为这会是一个问题,因为接口声明的参数是可选的,抽象类实现它而不需要参数.
这是php v5.4的一个东西,它提供了什么优势?
另外,解决这个问题的最佳方法是什么?接口是由很多类实现的,所以我试图不破坏依赖; 你会建议在生命服务器上降级我的php版本吗?
在PHP 5.4中,类实现必须与抽象或接口的签名匹配.
接口接受参数$options,而实现则不接受.这可能导致错误.
http://www.php.net/manual/en/language.oop5.abstract.php
只需更新你的toJson()方法来接受$options参数.