1

DBへの接続にPDOを使用しています。MVC パターンを使用してどのように構成すればよいか考えていました。

現在、私は次のようにしています:

/model/DatabaseConfig.php

/モデル/DB.php

/モデル/Model.php

/モデル/MySQLDB.php

/model/User.php

ビュー/index.php

あなたはそれについてどう思いますか?大丈夫ですか?DB、モデル、および MySQLDB を別のサブフォルダーに配置する必要がありますか?

ありがとう。

4

1 に答える 1

2

DAO デザイン パターンhttp://en.wikipedia.org/wiki/Data_access_objectをご覧ください。これにより、モデルとデータベース インターフェイスを分離することができます。これは、ある時点でデータベースを切り替えたい場合に非常に役立ちます。

この記事で詳細を読むこともできます http://www.sitecrafting.com/blog/php-patterns-part-ii/

好みの問題ですが、以下のように構成します。

Model/User.php 
DAO/MySQLDB/User.php 
DAO/MySQLDB.php (old DB.php)
Config/DatabaseConfig.php 
View/Index.php 
MySQLDB.php

Modelビジネス ロジックを含むすべてのモデル クラス DAOが含まれる すべての汎用データベース SQL スクリプトと接続 Configが含まれる すべての構成スクリプトが含まれる すべて のViewビューDB.php

Model/User.phpスティーブはコメントでとの違いについて尋ねていました。DAO/MySQLDB/User.phpこの例がそれをうまく説明してくれることを願っています

class Model_User
{
    public function hashPassword($password)
    {
        $salt = SALT_STRING;
        return hash("sha512", $password.$salt);
    }

    public function getById($id)
    {
    $id      = (int) $id;
    $db_data = new MySQLDB_User();
    $db_data->getById($id);
    return $this;
    }
}

class MySQLDB_User
{
    public function getById($id)
    {
        $sql = "SELECT * FROM `users` "
        ." WHERE `id` = \"" . $this->_db_connection>real_escape_string($id)
        . "\" LIMIT 1";
        $result = $this->query($sql);
        $this->_parseRow($result);
        return $this;
    }
}

最大のフレームワークがどのようにフォルダを構成しているかを見てみましょう。つまり、Zend Framework の例はこちらhttp://framework.zend.com/manual/en/project-structure.project.html

彼らは通常、セットアップについて長い間考え、ほとんどの開発者はセットアップに精通しているため、新しい採用者がいる場合、彼らはそうでない場合よりも早くカスタムビルドシステムを使用する方法を見つけることができます.

于 2012-07-20T09:34:36.337 に答える