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 に答える