1

私はいくつかの 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新しい変数を作成しなくても関数で変数を使用できます。提案されているように、関数に挿入したくありません。すなわちこれ:

<?php
function someFunc ($pdo)
{
    $pdo->query("SELECT * FROM `someTable`");
}
4

1 に答える 1

1

コンパイル時に解決可能な定数値以外でクラス プロパティを初期化することはできません。コンストラクターで PDO オブジェクトを作成する必要があります。

public function __construct() {
    $this->con = new PDO(...);
}

さらに良いことに、クラスに PDO オブジェクトを受け入れて依存関係を注入する必要があります。これは、この 1 つのクラスだけでなく、複数のクラスでデータベース接続が必要であり、同じデータベースに再度接続したくないと推測しているためです。再び異なるクラスで:

public function __construct(PDO $con) {
    $this->con = $con;
}
于 2013-10-10T15:37:21.567 に答える