【问题标题】:How can you know the calling method type in PHP? [duplicate]如何知道 PHP 中的调用方法类型? [复制]
【发布时间】:2012-10-28 17:43:34
【问题描述】:

可能重复:
How to tell whether I’m static or an object?
How can I tell if a function is being called statically in PHP?

我的意思是如果你以这种方式调用方法class::method() 或以这种方式 $class->method()如何知道同一个方法中哪个方法被调用了?

【问题讨论】:

  • 嘿,好东西。我将两个较新的化身标记为最旧的化身的副本。

标签: php


【解决方案1】:

你不应该在调用 staticnon-static 方法时混用它们,但是你可以检查你的方法内部是否存在 $this

$staticcalled = isset($this);

【讨论】:

  • +1,但甚至不应该有办法检查它。就像你说的,不要混合静态和非静态。可惜 PHP 甚至允许它。
  • @GolezTrol:不是这样。 function foo($bar) { $bar->Baz(); } 如果我知道在任何$bar 中都有一个静态的Baz,我就可以了。否则我必须知道具体类型,打破鸭子类型。
  • “混合”静态和非静态方法不一定表示设计不好;它可能只是解决 PHP 的愚蠢坚持,即您不能将相同的方法调用为静态和非静态(E_STRICT 生效),但是你也不能有 两个具有相同名称的单独方法,一个是静态的,另一个是非静态的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-26
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 2019-11-01
相关资源
最近更新 更多