php抽象类属性来自另一个抽象类

时间:2013-07-04 13:00:28

标签: php oop abstract

我正在学习面向对象PHP,我认为我做的事情很愚蠢。

我有一个抽象的userManager类,我想为它分配一个$ db属性,该属性将是我的抽象数据库类的实例。

数据库类是:

abstract class Bdd{         
        private static $instance = null;

        public static function getInstance() {
            return self::$instance;
        }

userManager类是:

abstract class usersManager{
        public $db = Bdd::getInstance();

我在这一行有错误:public $db = Bdd::getInstance();

(解析错误:语法错误,意外'(',期待','或';')

这是错的吗?

我认为我误解了抽象类,在我的情况下单身是否更好?

3 个答案:

答案 0 :(得分:2)

当你声明一个类变量时,你不能调用一个方法,你需要做

public $db = null
public function __construct() {
  $this->db = Bdd::getInstance();
}

唯一的问题是当你扩展这个类并且你需要创建一个构造函数时,你需要通过执行parent::__construct();

来调用这个构造函数

答案 1 :(得分:0)

public $db = Bdd::getInstance(); 

由于上面的行而发生错误。声明变量时无法调用方法。

答案 2 :(得分:0)

必须能够在编译时评估类参数,而不是运行时。基本上你只能预定义简单的值,比如strings,null,int的e.c.t。

因为Bdd:getInstance()的结果在运行(即运行时)之前无法知道,所以它不能用作预定义值。

您应该将参数设置为null,然后在类构造函数方法中设置数据库实例。

相关问题