在我公司的代码库中,我看到在静态和对象上下文中使用的函数。例如类 A 有一个函数 b(),它使用 A::b() 和/或 object_of_type_A->b() 调用。我知道如果打开严格,这会引发错误。但我想知道这是否是一种不好的做法,如果是,那为什么呢?感谢您的回答。
如果我在任何地方都没有意义,请告诉我。我很乐意澄清。
最佳答案
我不是 php 专家,但这听起来就像 Java,允许但不鼓励。
如果它是静态的,我强烈建议只以静态方式调用它。否则它看起来取决于您应该调用它的对象的状态。
在 Java 中,最好的例子是 Thread.sleep()
。这是一个静态方法,它总是让当前线程 进入休眠状态。但是看看这段代码:
Thread t = new Thread(someTask);
t.start();
t.sleep(1000);
这段代码看起来在做什么?它看起来是让 other 线程进入休眠状态,而实际上它是当前正在休眠的线程。当您将其更改为普通静态调用时,它会更加明显:
Thread.sleep(1000);
这不是指t
,所以必须是关于当前线程的。
除非有一些特定于 php 的东西,通过变量调用静态方法会给你带来某种多态性,否则我建议你坚持以静态方式调用它。事实上,严格模式告诉你这样做是一个非常强烈的暗示,IMO :)
关于php - 一个函数是否应该在静态和对象上下文中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3210047/