1

我认为这主要是因为我是 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
    }
}

那么为什么不使用一组属性呢?我花了几个小时试图让它工作,但它没有,只是发现这是问题所在。我可以手动连接,但我想知道为什么第一个解决方案不起作用。

4

2 回答 2

3

您需要self关键字(以及范围解析运算符::)来访问这些私有静态属性。

$pdo = new PDO( self::$DSN, self::$USR, self::$PWD);

否则,您没有引用正确的变量。

有关静态关键字的更多信息,请参阅手册

于 2012-06-21T18:36:00.203 回答
1

您错误地调用了您的价值观。

$pdo = new PDO( self::$DSN, self::$USR, self::$PWD);

或者

$pdo = new PDO( MyClass::$DSN, MyClass::$USR, MyClass::$PWD);
于 2012-06-21T18:36:05.197 回答