如何从静态函数内的父类访问var

时间:2014-03-04 22:51:25

标签: php class static-members

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

(当谈到oop和php时仍然是一个菜鸟; - ))

小例子

class database{

    public $dbTable = 'mysqltable';

}  

class install extends database{

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

3 个答案:

答案 0 :(得分:1)

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

以下应该工作:

class database{

    public static $dbTable = 'mysqltable';

}  

class install extends database{

    public static function getTable(){
         parent::$dbTable;// working
    }
}

答案 1 :(得分:0)

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

如果你将$ dbTable设为静态(将public $dbTable = 'mysqltable';改为public static $dbTable = 'mysqltable';),你就可以从静态getTable()方法访问它,如下所示:parent::$dbTable;

答案 2 :(得分:0)

您需要使属性静态才能从静态方法访问它。静态方法无法使用$ 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());