我认为这主要是因为我是PHP OOP的新手,但我有一个简单的问题,我似乎找不到答案。由于我对几种方法使用相同的连接信息,我厌倦了取出信息并将它们作为私有和静态放入属性变量中。但是,在尝试建立PDO连接时,这不起作用:
class MyClass {
private static $DSN = "mysql:host=localhost;dbname=testdb";
private static $USR = "user";
private static $PWD = "password";
public static function connection() {
$pdo = new PDO($DSN, $USR, $PWD);
//more code
}
}
然而,当我手动输入信息时,它可以正常工作:
class MyClass {
public static function connection() {
$pdo = new PDO("mysql:host=localhost;dbname=testdb", "user", "password");
//more code
}
}
那么为什么不使用一组属性呢?我花了几个小时试图让它工作,它只是没有,只是发现这是问题。手动连接我很好,但我想知道为什么第一个解决方案不起作用。
答案 0 :(得分:3)
您需要self
关键字(以及范围解析运算符::
)才能访问这些私有静态属性。
$pdo = new PDO( self::$DSN, self::$USR, self::$PWD);
否则你没有引用正确的变量。
有关静态关键字的详情,请参阅the manual。
答案 1 :(得分:1)
您正在错误地调用您的值。
$pdo = new PDO( self::$DSN, self::$USR, self::$PWD);
或者
$pdo = new PDO( MyClass::$DSN, MyClass::$USR, MyClass::$PWD);