2

データベースとのやり取りが必要な小さな PHP アプリケーションを開発しています。アプリケーションを他の Web サイトに簡単に実装できるようにしたいので、汎用性と統合のポイントに到達するまでは問題ありません。

私の懸念は、アプリケーションが統合される Web サイトに独自のクラスがある可能性があるため、2 つのデータベース クラスを並べて実行することは良い習慣でしょうか。ここで、データベース クラスを別のクラスに簡単に置き換えられるようにするにはどうすればよいか (または、そうすべきか) という大きな問題が生じます。

これまでの私の考えは、

  • ユーザーがデータベース接続を定義できるように、独自のクラスを使用するだけです

また

  • いくつかの一般的な関数命名規則を使用してクラスを作成します。$this->db->Query(); $this->db->fetchAll()これにより、拡張が容易になり、関数を Web サイトのネイティブ関数に置き換えることができます。

私はクラスを小さく保っていますが、関数はほとんどありませんが、開発者にとって可能な限りフレンドリーにするためにこれを作成する方法にかなり困惑しています。

ありがとう、
M.

4

2 に答える 2

0

最も一般的な php データ オブジェクト インターフェイスは次のとおりです。

  1. MySQLi - ビルトイン PHP データベース インターフェース
  2. PDO - 組み込みの PHP データ オブジェクト
  3. 推進、動かす
  4. 教義
  5. PHP アクティブレコード
于 2013-03-24T19:21:01.083 に答える
0

「2 つのデータベース クラスを並行して実行することは良い習慣ですか?」いいえ、意味がありません...?

別のサイトに簡単に転送できる特定の DB クラスを使用します。これを実現するには、PDO オブジェクトを使用します。ログイン資格情報などが保存されるため、settings.ini は webroot の外部に保存する必要があります。

<?php
class DB_Instance
{
    private static $db;

    public static function getDBO()
    {
        global $dbSettings;
        global $dsn;
        global $user;
        global $password;

        if (!self::$db)

            //Get connection parameters from ini-file
            $dbSettings = parse_ini_file('settings.ini', true);
            $dsn = 'mysql:dbname=' . $dbSettings['database']['name'] . ';host=' . $dbSettings['database']['host'];
            $user = $dbSettings['database']['user'];
            $password = $dbSettings['database']['password'];

            try {   
                $dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_PERSISTENT => TRUE));
            } catch (PDOException $e) {
                echo 'Connection failed: ' . $e->getMessage();
            }
            $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
            $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $dbh->exec("set names utf8");
            self::$db = $dbh;

        return self::$db;
    }
}
?>

次に、次のようなクラスによってアクセスされます。

<?php
class Language {
    private $languageId;                //Language identifier
    private $language;                  //Which language
    private $dbInstance;                //DBInstance

    public function __construct($languageId = null) {
        $this->dbInstance = DB_Instance::getDBO();
....

次に、次のような関数を実行します。

$statement = $dbInstance->{PDO function}

PDO クラスの詳細については、http ://www.php.net/manual/en/class.pdo.php を参照してください。

于 2013-03-24T23:43:03.137 に答える