php – 确定静态方法是静态调用还是作为实例方法调用

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 确定静态方法是静态调用还是作为实例方法调用脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
PHP中,可以调用静态方法,就好像它们是实例方法一样:
class A {
    public static function b() {
        echo "foo";
    }
}

$a = new A;

A::b();  //foo
$a->b(); //foo

有没有办法确定b()内部是否静态调用方法

我尝试了isset($this),但在两种情况下都返回false,而debug_backtrace()似乎表明这两个调用实际上都是静态调用

array(1) {
  [0]=>
  array(6) {
    ["file"]=>
    string(57) "test.PHP"
    ["line"]=>
    int(23)
    ["function"]=>
    string(1) "b"
    ["class"]=>
    string(1) "A"
    ["tyPE"]=>
    string(2) "::"
    ["args"]=>
    array(0) {
    }
  }
}
Foo
array(1) {
  [0]=>
  array(6) {
    ["file"]=>
    string(57) "test.PHP"
    ["line"]=>
    int(24)
    ["function"]=>
    string(1) "b"
    ["class"]=>
    string(1) "A"
    ["type"]=>
    string(2) "::"
    ["args"]=>
    array(0) {
    }
  }
}
只有在未将方法明确声明为静态时,isset技巧才有效. (因为这正是将 – >对象调用转换为静态调用原因.)

如果不使用static修饰符,仍然可以通过class :: method()调用方法.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 确定静态方法是静态调用还是作为实例方法调用全部内容,希望文章能够帮你解决php – 确定静态方法是静态调用还是作为实例方法调用所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。