加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 测试函数是否从静态上下文运行

发布时间:2020-12-13 13:14:06 所属栏目:PHP教程 来源:网络整理
导读:我正在编写一个 PHP类,并且包含了一些静态函数,可以快速访问,因为它们很常用,功能也很简单.但是,他们确实使用其中的对象进行数据库访问.我可能会在整个代码中使用静态和非静态上下文中的这些静态方法,因此我希望能够测试是从静态或非静态上下文调用该函数,以
我正在编写一个 PHP类,并且包含了一些静态函数,可以快速访问,因为它们很常用,功能也很简单.但是,他们确实使用其中的对象进行数据库访问.我可能会在整个代码中使用静态和非静态上下文中的这些静态方法,因此我希望能够测试是从静态或非静态上下文调用该函数,以便我可以避免创建重复的对象如果从非静态上下文调用该函数(此实例对象和要静态使用的函数中的实例对象).有没有什么方法可以在函数中测试它,以便我可以使用实例对象,如果从非静态上下文调用该函数,并创建它自己的对象,如果从静态上下文调用该函数?

代码示例:

class MyClass {
  private $db;

  function __constuct(){
    $this->db = new DBConnect();
  }

  public static function myFunction(){
    if(/* Is static */){
      $db = new DBConnect();
    } else {
      $db =& $this->db;
    }
    // Do processing with $db,etc.
  }
}

When a method is declared as static,
not only is the magic variable $this
unavailable (returns NULL),but it is
impossible to tell if the function was
actually called from a static context.
A backtrace implies that for a static
method,calling $object->method() is
internally translated to
className::method() at run time.

http://php.net/manual/en/language.oop5.static.php

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读