Php 错误:不应静态调用,假设$this来自不兼容的上下文。只在我的机器上

Php 错误:不应静态调用,假设$this来自不兼容的上下文。只在我的机器上,php,static-methods,Php,Static Methods,我的团队成员以静态方式在控制器中编写模型函数调用,例如: $data = ModelName::functionName($param); $model = new Model(); $data = $model->functionName($param); 而应该动态调用它,例如: $data = ModelName::functionName($param); $model = new Model(); $data = $model->functionName($param

我的团队成员以静态方式在控制器中编写模型函数调用,例如:

$data = ModelName::functionName($param);
$model = new Model();
$data = $model->functionName($param);
而应该动态调用它,例如:

$data = ModelName::functionName($param);
$model = new Model();
$data = $model->functionName($param);
大多数情况下,所有调用都是静态进行的。代码在服务器和本地机器上运行,我的除外。而且静态调用太多,不重写庞大的代码库就无法修复

我总是通过composer更新我的项目。我的php版本是5.4


任何人都可能知道这是关于什么的?

您可能有运行PHP的
E\u STRICT
错误报告。尝试将其关闭,看看这是否解决了问题,例如
E_STRICT
错误的错误报告


对不起,我的英语写得不太好,但我理解你的问题是:

您需要将静态函数:

static public function functionName () {

   $data = ModelName :: functionName ($ param);

}
这是通过服务器处理的不同版本的
PHP
实现的。
我希望我已经理解了你的问题,并且翻译得很好,因为我发现了一个类似的错误,我就这样解决了。

请提供一个例子。另外,PHP 5.5早就发布了,甚至有5.6个已经过时了,所以你应该考虑更新到最近的版本。我更新了我的PHP版本,这似乎解决了这个问题,谢谢。UlrichEckhardtI同意,你只是在用这种方式隐藏问题。您确实应该将其更改为正确的方式。即使关闭错误报告,出现这些警告也会影响性能:请参阅:@AdamFriedman我想您的意思是:编写错误代码会影响性能?;)感谢有用的帖子,我不知道。我个人喜欢静态函数,因为它们调用方式简单,无需初始化。而且,由于某些方法实际上并不需要不同的“对象”实例,因此它们适合于API方法。所以,当它们充当“通用/全局/功能”函数时,我看不出它们有什么问题。