0

我正在学习面向对象的 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();

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

这是错的吗?

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

4

3 回答 3

2

声明类变量时不能调用方法,您需要这样做

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

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

于 2013-07-04T13:03:39.593 回答
0
public $db = Bdd::getInstance(); 

由于上述行而发生错误。声明变量时不能调用方法。

于 2013-07-04T13:05:16.350 回答
0

类参数必须能够在编译时评估,而不是在运行时评估。基本上你只能预定义简单的值,如字符串、null、int 等

因为Bdd:getInstance()直到运行(即运行时)才能知道结果,所以它不能用作预定义值。

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

于 2013-07-04T13:06:28.860 回答