【问题标题】:How to tell whether I'm static or an object?如何判断我是静止的还是物体?
【发布时间】:2009-10-30 02:46:02
【问题描述】:

有人知道如何判断我是被静态调用(Classname::function)还是在 PHP 方法中的对象($classInstance->function)中调用?

【问题讨论】:

  • 这就是静态关键字的用途。如果您将两者混为一谈,您应该会收到警告。
  • 静态函数不应该非静态调用,非静态方法也不应该静态调用。 PHP 中的另一件事应该会产生致命错误,但不会。
  • 在手头的情况下,我必须快速修复一个错误才能上床睡觉 :) 但你是对的,当然。

标签: php


【解决方案1】:

诚然不是随便...但肖恩科茨有一个cool and fairly simple approach to finding this out

$isStatic = !(isset($this) && get_class($this) == __CLASS__);

【讨论】:

    【解决方案2】:

    检查$this 是否设置并等于类。对于实例调用,它将相等,而对于静态调用,它将不相等(或 null)。

    【讨论】:

    • 这实际上是不正确的。在接受的答案中查看我的链接博客文章。 $this 可以在静态调用方法时设置,它甚至可能不属于包含类。
    猜你喜欢
    • 2010-11-24
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-11
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多