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