【发布时间】:2016-01-18 10:25:23
【问题描述】:
我有以下代码:
class A {
public function methodB()
{
// do something
return 1;
}
}
$a = A::methodB();
它永远不会起作用 它可以在那台机器上运行!它确实返回 1。真的,我发誓我没有喝醉。
当然,如果我在我的机器或生产服务器上运行它,它将无法工作。 因为你不能调用像静态这样的非静态方法。类应该总是首先被实例化。
我很担心。今天想,当我设置一个单独的工作机器来测试项目时,我再次获得了该代码工作的环境。
情况变得更糟 - 我的团队中有一些开发人员仍然不清楚静态和非静态方法之间的区别。结果,他们的代码在他们的机器上运行良好,但在任何其他环境下都失败了。
为什么它有效?我希望这样的代码失败。它不应该工作。
它工作的机器配置如下:
vagrant@vagrant-ubuntu-trusty-32:/var/www/apotheke$ php -v PHP 5.6.17-3+deb.sury.org~trusty+1 (cli) 版权所有 (c) 1997-2015 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies Zend OPcache v7.0.6-dev,版权所有 (c) 1999-2015,由 Zend Technologies 提供
真的,我觉得自己很愚蠢。 我错过了什么吗?
【问题讨论】:
-
只要不使用
$this,PHP中的这段代码就可以逍遥法外 -
我希望它失败......(检查文档,我希望必须有一些设置让它失败)
-
感谢上帝,我可以玩 config )