2017-01-23 11 views
3

Laravelを5.xにアップグレードし、"jenssegers/Date": "^3.0"を使用するだけです。Laravel 5.3 migration

移行ながらだから、エラーがあるようです:

[ErrorException] Declaration of Jenssegers\Date\Date::diffForHumans(Carbon\Carbon $since = NULL, $absolute = false) should be compatible with Carbon\Carbon::diffForHumans(Carbon\Carbon $other = NULL, $absolute = false, $short = false)

それを修正するために何ができるかを提案してください。

答えて

0

あなたがcurrent Carbon source codeを比較する場合:あなたはすべての問題があってはならない参照

public function diffForHumans(Carbon $since = null, $absolute = false, $short = false) 

current jenssegers/Date source code
public function diffForHumans(Carbon $other = null, $absolute = false, $short = false) 

。 jenssegers/Dateより新しいCarbonを使用しているようですが、バージョンは互換性がありません。 jenssegers/Dateを更新する必要があります。

3.2.8 seems to be the latest release、私はそこに行こうとします。 this commit3.2.3 seems to be the first version including the third parameter、:

Carbon\Carbon::diffForHumans(Carbon\Carbon $other = NULL, $absolute = false, $short = false) has a new third argument and lack of it in Jenssegers\Date\Date::diffForHumans is not playing nicely.

ので、あなたのバージョンが、少なくともそれにする必要があります。

1

実際にこのパッケージに問題がありますjenssegers/date。あなたが見ることができるようにJenssegers\Dateはカーボンを拡張し、行に104

public function diffForHumans(Carbon $since = null, $absolute = false, $short = false) 

はこれを克服する方法は、彼らので、推奨されていないいずれかのクラス、上のメソッドを再定義することであるカーボン

public function diffForHumans(Carbon $other = null, $absolute = false) 

とは異なる実装を持っています両方がVendorフォルダ内にあります。だからあなたのオプションは、jassegers/dateの問題を開くか、そのパッケージを使用しないようにすることです。

プロジェクトのComposer.jsonにこのパッケージがなくても、使用する他のパッケージの一部がjassegers/dateである場合、この問題はさらに困難になります。 Composer.jsonのVendorでプロジェクトの依存関係を確認することができます。この場合、少なくとも更新されるまで、jassegers/dateを依存関係として使用するパッケージとは別のパッケージを使用することを検討することができます。

おそらく誰かが

P.S.。これはちょうど私の頭の上のものであり、より良い提案を持っていますあなたがComposer.jsonで直接使用している場合はjassegers/dateをフォークして、自分でメソッドの実装を変更し、そのフォークされたバージョンを本物のものが修正されるまで使用してください。間接的に使用している場合(使用している他のパッケージには依存関係があります)、これはもう少し複雑になります。つまり、jassegers/dateになるまでパッケージをフォークダウンする必要があります。これは非常に面倒な作業ですが、一時的に問題を解決する必要があります。