了解PHP继承

时间:2011-04-26 21:52:52

标签: php oop inheritance

我理解OOP中的继承的基本原则,但我有一个特定的事情,我想做的事情,并想知道如何做到最好。

假设我有一个核心课程:

class Core {
    ....
}

我还有两个或更多其他扩展此功能的类

class MyClass1 extends Core {
    ....
}
class MyClass2 extends Core {
    ....
}

我还有一个数据库类,我在其中执行查询,我想将数据库类的实例化对象(可能通过引用)传递给我的每个类。其中一个原因是存储页面执行的查询列表或计数。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

您可以将数据库对象的实例传递给类的构造函数:

class Core
    protected $db;

    public function __construct(Your_Db_Class $database) {
        $this->db = $database;
    }

}

然后,从您的方法开始,使用$this->db来访问您的数据库。


当然,在实现类的实现时,您必须指定数据库对象:

// somewhere, instanciate your DB class
$db = new Your_Db_Class();

// And, then, when instanciating your objects :
$obj = new MyClass1($db);


另一种方法是使用Singleton design pattern,因此只能有一个数据库类实例。

可能更容易设置;但之后不太容易进行单元测试。

答案 1 :(得分:0)

您可以将数据库对象作为参数传递给类的__construct函数,然后在所述函数中将db对象分配给类的成员,例如$ this-> database_handler。

另一种可能性是使用作为数据库对象的全局变量,但全局变量由于多种原因是邪恶的,所以让我们忽略它。

另一个注意事项:默认情况下,所有对象都通过引用传递,因此您无需担心。