我正在创建一个带有一些需要一些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`");
}
答案 0 :(得分:1)
除了编译时可解析的常量值之外,您不能初始化类属性。您必须在构造函数中创建PDO对象:
public function __construct() {
$this->con = new PDO(...);
}
更好的是,你应该让你的类接受一个PDO对象并依赖注入它,因为我猜测你需要一个数据库连接,而不仅仅是这一个类,你不要我想在不同的类中一次又一次地连接到同一个数据库:
public function __construct(PDO $con) {
$this->con = $con;
}