【问题标题】:How to access class properties from parent abstract class to a static method?如何从父抽象类访问类属性到静态方法?
【发布时间】:2014-06-04 18:38:22
【问题描述】:

这是一个简单的例子。

abstract class A{
  protected $foo = 'I m foo'; 
}

class B extends A{
  static function sayFoo(){
     // get the value of $foo here. 
  }
}

我可以将 foo 作为常量传递,或者将函数从静态更改为普通函数,或者在父类中声明 sayFoo,但我想先检查是否有其他方法而不使用反射

【问题讨论】:

    标签: php oop


    【解决方案1】:

    您不能静态访问protected $foo 属性,因为它没有被声明为静态的。但是,如果它是一个对象,则可以。解决此问题的一种方法是在静态函数中实例化类。

    <?php
    
    abstract class A{
      protected $foo = 'I m foo'; 
    }
    
    class B extends A{
      static function sayFoo(){
         // get the value of $foo here. 
          $bar = new self();
          echo $bar->foo;
      }
    }   
    
    B::sayFoo(); //prints 'I m foo';
    
    ?>
    

    【讨论】:

    • 我还是不明白new self()s在其中的作用。
    • @BiVOC self 是对当前类名的引用。认为它与完成$bar = new B() 相同;
    猜你喜欢
    • 2022-01-24
    • 2021-11-30
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多