PHP在类中定义一个新的PDO对象(外部函数)

时间:2013-10-10 15:29:25

标签: php oop pdo

我正在创建一个带有一些需要一些SQL东西的函数的类,我不希望为每个函数定义一个新的PDO对象,但是有一个适用于所有函数的函数。

这是我到目前为止所得到的:

<?php
class UserSystem
{
    public $mysqlDetails = 
    [
        "host"        => "127.0.0.1",
        "user"        => "",
        "pass"        => "",
        "database"    => "",
        "table"       => ""
    ];

    public $con = new PDO
    (
        "mysql:host=" . $this->mysqlDetails['host'] .
        ";dbname=" .    $this->mysqlDetails['database'] . ";",
                        $this->mysqlDetails['user'],
                        $this->mysqlDetails['pass']
    );

我怎么能让这个工作?目前我收到此错误: Parse error: syntax error, unexpected 'new' (T_NEW)。有没有更好的方法来做到这一点,所以我可以在函数中使用$con变量,而无需创建新的变量。 我不想把它注入到我已经看过建议的函数中。 IE这个:

<?php
function someFunc ($pdo)
{
    $pdo->query("SELECT * FROM `someTable`");
}

1 个答案:

答案 0 :(得分:1)

除了编译时可解析的常量值之外,您不能初始化类属性。您必须在构造函数中创建PDO对象:

public function __construct() {
    $this->con = new PDO(...);
}

更好的是,你应该让你的类接受一个PDO对象并依赖注入它,因为我猜测你需要一个数据库连接,而不仅仅是这一个类,你不要我想在不同的类中一次又一次地连接到同一个数据库:

public function __construct(PDO $con) {
    $this->con = $con;
}