1

我正在创建一个带有几个需要一些 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在函数中使用变量而不必创建一个新变量。我不想像我所看到的那样将它注入到函数中。即:

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

1 回答 1

1

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

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

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

public function __construct(PDO $con) {
    $this->con = $con;
}
于 2013-10-10T15:37:21.567 回答