【问题标题】:How to access var from parent class inside a static function如何从静态函数中的父类访问var
【发布时间】:2014-03-04 22:51:24
【问题描述】:

如何从静态类/函数中的父类访问变量?

(在 oop 和 php 方面仍然是菜鸟;-))

小例子

class database{

    public $dbTable = 'mysqltable';

}  

class install extends database{

    public static function getTable(){
         $this->dbTable;// not working
         self::dbTable;// not working
    }
}

【问题讨论】:

    标签: php class static-members


    【解决方案1】:

    使用 parent:: 并确保扩展类中的变量也定义为 static

    以下应该可以工作:

    class database{
    
        public static $dbTable = 'mysqltable';
    
    }  
    
    class install extends database{
    
        public static function getTable(){
             parent::$dbTable;// working
        }
    }
    

    【讨论】:

    • 看到了,即使我添加了静态这个词,错误仍然存​​在。
    • 您是否添加了 $ 符号?父::$dbTable;
    【解决方案2】:

    PHP 不支持从静态方法访问实例变量。

    如果您将 $dbTable 设为静态(将 public $dbTable = 'mysqltable'; 更改为 public static $dbTable = 'mysqltable';),您将能够通过静态 getTable() 方法访问它,如下所示:parent::$dbTable;

    【讨论】:

      【解决方案3】:

      您需要将属性设为静态才能通过静态方法访问它。 $this 不适用于静态方法。如果这样做,您可以通过 self 或 parent 访问静态方法:

      class database
      {
         public static $dbTable = 'mysqltable';
      }
      
      class install extends database
      {
          public static function getTable()
          {
               return array(self::$dbTable, parent::$dbTable);
          }
      }
      var_dump(install::getTable());
      

      【讨论】:

        猜你喜欢
        • 2017-05-21
        • 2014-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-07
        • 2011-10-04
        相关资源
        最近更新 更多