我只是升级到Laravel到5.x并使用"jenssegers/Date": "^3.0"
。
因此,在迁移时,似乎存在错误:
[ErrorException]声明 Jenssegers \ Date \ Date :: diffForHumans(Carbon \ Carbon $ since = NULL, $ absolute = false)应该兼容 Carbon \ Carbon :: diffForHumans(Carbon \ Carbon $ other = NULL,$ absolute = false,$ short = false)
请建议可以采取哪些措施来解决问题。
答案 0 :(得分:1)
实际上你的问题在于这个包jenssegers/date。如您所见Jenssegers\Date
扩展碳和第104行
public function diffForHumans(Carbon $since = null, $absolute = false, $short = false)
与Carbon有不同的实现
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
。这将是相当繁琐的工作,但应该暂时解决问题。
答案 1 :(得分:0)
如果您比较current Carbon source code:
public function diffForHumans(Carbon $other = null, $absolute = false, $short = false)
current jenssegers/Date source code:
public function diffForHumans(Carbon $since = null, $absolute = false, $short = false)
你知道应该没有任何问题。看起来你使用的是新的Carbon而不是jenssegers / Date,而且版本不兼容。您需要更新您的jenssegers / Date。
3.2.8 seems to be the latest release,我会去那里测试。 3.2.3 seems to be the first version including the third parameter,this commit:
Carbon \ Carbon :: diffForHumans(Carbon \ Carbon $ other = NULL,$ absolute = false,$ short = false)有一个新的第三个参数,缺少它 Jenssegers \ Date \ Date :: diffForHumans打得不好。
所以你的版本至少应该是那个。