我的Laravel 4.2应用程序在PHP5下工作良好。自从我安装了一个运行PHP7的新vagrant box后,只要我运行一个函数名与类名相同(关系函数)的模型,就会出现错误,像这样:
<?php
use Illuminate\Database\Eloquent\SoftDeletingTrait;
class Participant extends \Eloquent
{
use SoftDeletingTrait;
[...]
public function participant()
{
return $this->morphTo();
}
[...]
}
我得到了以下错误信息:
在未来的PHP版本中,类名与其同名的方法将不再作为构造函数;Participant有一个已弃用的构造函数(视图:...)
直到今天我才知道,在PHP4中,与类名相同的方法是类的构造函数。嗯,我真是个糟糕的程序员...但在这种情况下,根据我对PHP7中正在发生的事情的理解,他们更正了我的错误,因为我从来没有想过使用这个函数作为构造函数,因为它仅定义了Eloquent关系。
但是,我该如何摆脱这个消息呢?就我所了解的,我的代码在PHP4中存在错误,但在PHP7中不存在错误,对吧?如果不是必要的,我不想重构这个函数,因为它在多个地方被使用。
有人能解释一下我做错了什么以及为什么旧版本的PHP可以工作吗?
谢谢!