2013-12-20 2 views
0

laravel orm 구성 요소를 사용 중이며 수명 서버를 배치 할 때 다음 사항을 준수합니다. 선택적 매개 변수 인터페이스를 구현하는 동안의 사용

내가 내가 설치된 PHP는 v5.4.6이있는 우분투 서버에 배포 오류

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

을 얻었다. Didnt는 php v5.3.5가 설치되어있는 로컬 컴퓨터에서 작업하는 동안 이것을 얻지 못했습니다. 추상 클래스의 구현은 인터페이스 선언은 선택과 추상 등의 매개 변수를 가지고 있기 때문에

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

나는이 문제가 될 것이라고 생각 didnt는 동안

인터페이스 선언은

public function toJson($options = 0); 

다음과 같다 클래스는 매개 변수 없이도이를 구현합니다.

이것은 php v5.4의 ​​것입니까? 어떤 장점이 있습니까?

또한이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 인터페이스는 많은 클래스에 의해 구현되므로 의존성을 깨뜨리지 않기 위해 노력하고 있습니다. 당신은 삶의 서버에서 내 PHP 버전을 다운 그레이드 조언을합니까?

+0

실제로 선택적 인수를 구현하는 것이 좋습니다. – rmobis

답변

5

PHP 5.4에서 클래스 구현은 추상 또는 인터페이스의 서명과 일치해야합니다.

인터페이스에는 인수 $options을 사용할 수 있지만 구현에는 적용되지 않습니다. 이로 인해 오류가 발생할 수 있습니다.

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

는 그냥 $options 인수를 받아들이는 당신의 toJson() 메소드를 업데이트합니다.

+10

+1 사용 중 – chiliNUT