php创建一个类变量

时间:2012-03-02 21:47:01

标签: php oop class

您好我正在使用php而我正在尝试创建一个数据库类,其中构造函数将类连接到数据库并将指针指定给类变量。我遇到的问题是,每次创建类的新实例时,都会调用构造函数并将代码连接到数据库。我不明白为什么每次调用它都应该连接到数据库,那么我将如何在所有实例中创建一个相同的类变量,一旦给出指针,它就不会创建它试。

由于

3 个答案:

答案 0 :(得分:2)

数据库连接不应该放在构造函数中。你应该有一个ConnectionFactory类,它将连接数据库并返回一个新的DatabaseConnection对象。

<?php

class ConnectionFactory {
    public static function newConnection($credentials) {
        //Connect to database
        $connection = new PDO(/* Credentials */);
        return $connection;
    }
}

$connection = ConnectionFactory::newConnection(CREDENTIALS);

答案 1 :(得分:2)

您好有两种选择。

您最好的选择是创建singleton class。这是一个引用自身的类,因此您永远不能创建多个类。如果您尝试创建多个版本,它将返回当前初始化版本。

否则坚持使用你所拥有的东西,并确保你每次都不打电话给new

e.g。

$db = new Database(); // call this once to create
// don't do this again
$anotherdb = new Database();
// just use the db object from before
$db->query("...");

然而,这可能会让人感到困惑,并且您可能会失去变量的范围,因此我建议使用单例方法。有些人会告诉你不要使用单身人士,但是由你决定。适用于数据库类。

如果您浏览互联网,您将找到其他数据库类的示例。

看看像codeigniter这样的框架,他们使用自己的数据库类。值得看看它们是如何工作的。

答案 2 :(得分:0)

您应该创建一个单独的连接,并在类之间共享它,而不是为您创建的每个类建立新连接。

$connection = new PDO( ... );

$first = new Foo( $connection );
$second = new Bar( $connection );

这样两个实例都可以访问同一个连接。

观看此视频也可能会受益:The Clean Code Talks - Don't Look For Things!