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


PHP Define a new PDO object inside class (outside function)

我正在制作一个带有几个函数的类,该函数需要一些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`");
}

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

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

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

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