php - 错误 :should not be called statically, 假设 $this 来自不兼容的上下文。只在我的机器上

标签 php static-methods

我的团队成员在 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/

相关文章:

java - 如何从静态上下文引用非静态方法 'findViewById'?

java - 完成后,从 AsyncTask 终止网络服务发现而不会泄漏

.net - Fluent Interfaces - 正在创建的对象的数量

PHP - 从 AJAX 调用的脚本将数据记录到文件时出现问题

javascript - 提交被 preventDefault() 阻止

php - 大量数据的 HighChart 不起作用

java - Kotlin 中类型参数化类的 Java 静态方法的引用

loops - Prime #程序识别假素数

php - 以与 MySQL 相同的方式比较 PHP 中的字符串

php - 使用 symfony 代码扩展 Orange hrm 的最佳方法是什么?