php - 一个函数是否应该在静态和对象上下文中使用

标签 php programming-languages

在我公司的代码库中,我看到在静态和对象上下文中使用的函数。例如类 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/

相关文章:

hash - 哈希在编程中是如何工作的?

ios - 如何在不为可选参数指定值的情况下快速调用以下函数?

programming-languages - 哪些编程语言不被视为高级语言?

programming-languages - 我需要学习什么才能为编程语言做出贡献?

php - 为什么我的 SELECT 代码不起作用?

php - Ruby 是否像 PHP 一样支持 var 引用?

php - CakePHP 3.3.15 多重匹配()与 OR 链接

compiler-construction - 你自己的编程语言会是什么样子?

javascript - 多次调用javascript中的单个函数

javascript - 如何将按钮的 php 变量 onclick 作为参数发送给 javascript 函数