我的团队成员在 Controller 中静态编写了模型函数调用,例如:
$data = ModelName::functionName($param);
虽然它应该被动态调用,例如:
$model = new Model();
$data = $model->functionName($param);
大多数情况下,所有调用都是静态进行的。该代码在服务器和除我之外的本地计算机上运行。如果不重写庞大的代码库,静态调用太多无法修复。
我总是通过 composer 更新我的项目。我的 php 版本是 5.4。
有人可能知道这是关于什么的吗?
最佳答案
您可能在运行 PHP 时报告了 E_STRICT
错误。尝试将其关闭并查看是否解决了问题 - 例如关闭 E_STRICT
错误的错误报告。 See this post on SO :
<?php
error_reporting(E_ALL ^ E_STRICT);
但我不得不说,混合对象风格和静态风格的调用是个坏主意。函数调用应该明确表明函数是在静态或对象上下文中调用的,并据此采取行动。即使它有点难(对所有文件进行 grep 并更改错误的调用有多难?),我还是建议先修复您的代码。
我还建议阅读有关 static keyword 的内容在面向对象编程中 - 区分静态方法调用和对象方法调用是有原因的,不是“让事情变得更简单”的原因,而更多的是 “让事情更清楚”,我会说。
关于php - 错误 :should not be called statically, 假设 $this 来自不兼容的上下文。只在我的机器上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25846310/