如何从静态类/函数中的父类访问变量?
(当谈到oop和php时仍然是一个菜鸟; - ))
小例子
class database{
public $dbTable = 'mysqltable';
}
class install extends database{
public static function getTable(){
$this->dbTable;// not working
self::dbTable;// not working
}
}
答案 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());