我目前有以下代码:
class User {
private static $_db;
public function __construct () {
self::$_db = Database::getInstance()->getConnection();
}
public static function addUser ($name, $username, $password) {
// Define Values
$name = ucwords(trim($name));
$username = strtolower(trim($username));
$password = password_hash($password, PASSWORD_BCRYPT);
// Define Query
$query = "INSERT INTO `users` (name, username, password) VALUES(:name, :username, :password)";
// Prepare Query
$preparedQuery = self::$_db->prepare($query);
// Execute Query
$preparedQuery->execute([
':name' => $name,
':username' => $username,
':password' => $password
]);
}
}
我试图通过构造设置我的数据库连接的类属性。问题是我希望能够通过简单地调用addUser()
来访问脚本中任何位置的User::addUser()
方法。有没有办法可以通过构造设置静态属性,还是有更好的方法来访问我的数据库?
答案 0 :(得分:1)
仅在创建类的新实例时调用构造。由于ReadJson
是静态方法,因此新实例未创建,您的构造函数将不会被调用,静态existingValue
变量将永远不会被初始化。
我会添加一个静态方法来返回与db的连接,你可以在整个代码中随处使用它。例如:
Bar
如果您希望继续使用静态属性,可以为属性创建静态setter(在调用addUser()
之前,您需要至少调用此方法一次):
$_db