【问题标题】:could static members use nonstatic members and vice versa?静态成员可以使用非静态成员,反之亦然?
【发布时间】:2011-01-13 07:57:41
【问题描述】:

我可以在静态方法中使用非静态成员吗​​?

例如。

 $this->nonStaticProperty
 $this->nonStaticMethod()

反之亦然,也就是说在非静态方法中使用静态成员?

【问题讨论】:

    标签: php oop class


    【解决方案1】:

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

    将类属性或方法声明为静态使它们无需实例化即可访问。声明为静态的属性不能被实例化的类对象访问(尽管静态方法可以)。

    您不能在静态函数中使用非静态成员,因为它们超出了函数的范围。但是你可以在非静态函数中使用静态成员。

    【讨论】:

      【解决方案2】:

      由于静态成员没有实例,它不能调用实例方法(除非您在该方法中创建实例)。

      【讨论】:

      • 是否推荐在静态方法中创建实例?
      • 不,不是;如果你需要这样做,你有一个设计问题
      【解决方案3】:

      并非如此,因为您不能在静态上下文中使用 $this。

      【讨论】:

        【解决方案4】:
        class foo {
            
              
            
            public static function bar()
            {
                echo "bar calling\n";
            }
            
        }
        
        
        
        $ff = new foo();
        echo $ff->bar();
        
        echo foo::bar();
        

        在这里查看:http://sandbox.onlinephpfunctions.com/code/48b9540c8d897f46dcd8ea13595950fa78fa96e5

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-05-20
          • 2012-04-13
          • 1970-01-01
          • 1970-01-01
          • 2012-10-20
          • 1970-01-01
          • 2013-05-03
          • 1970-01-01
          相关资源
          最近更新 更多