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

PHP在类内部(函数外部)定义一个新的PDO对象,php,oop,pdo,Php,Oop,Pdo,我正在创建一个包含一些需要SQL的函数的类,我不想为每个函数定义一个新的PDO对象,而是要有一个适用于所有函数的PDO对象 到目前为止,我得到的是: <?php class UserSystem { public $mysqlDetails = [ "host" => "127.0.0.1", "user" => "", "pass" => "",

我正在创建一个包含一些需要SQL的函数的类,我不想为每个函数定义一个新的PDO对象,而是要有一个适用于所有函数的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']
    );
只能使用编译时可解析的常量值初始化类属性。您必须在构造函数中创建PDO对象:

public function __construct() {
    $this->con = new PDO(...);
}
更好的是,您应该让您的类接受PDO对象并注入依赖项,因为我猜您需要的数据库连接不仅仅是这一个类,而且您不希望在不同的类中一次又一次地连接到同一个数据库:

public function __construct(PDO $con) {
    $this->con = $con;
}
只能使用编译时可解析的常量值初始化类属性。您必须在构造函数中创建PDO对象:

public function __construct() {
    $this->con = new PDO(...);
}
更好的是,您应该让您的类接受PDO对象并注入依赖项,因为我猜您需要的数据库连接不仅仅是这一个类,而且您不希望在不同的类中一次又一次地连接到同一个数据库:

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

谢谢,我现在正在使用一个构造器,它以一种简洁的方式解决了我所有的问题。我制作了一个私有变量$con,然后在构造函数中设置它,如果有人读到这篇文章也有同样的问题的话。谢谢你,我现在正在使用一个构造函数,它以一种干净简单的方式解决了我所有的问题。我创建了一个私有变量$con,然后在构造函数中设置它,如果有人读到它也有同样的问题的话。你不应该在类中初始化PDO,而应该将它作为依赖项注入。您可以使用该方法作为基础并加以改进。您当前的实现违反了几个原则。您不应该在类中初始化PDO,而应该将其作为依赖项注入。您可以使用该方法作为基础并加以改进。您当前的实现违反了以下几个原则。