sql >> データベース >  >> RDS >> Mysql

OOP PHP PDO私の最初のプロジェクト、私は正しくやっていますか?

    モデル/マッパーを使用することから始めます。これは、プレーンオブジェクトを取得し、それらをデータベースに永続化できるようにするための非常に簡単な方法です。また、データベース呼び出しとコード(永続ロジック)を機能(アプリケーションまたはビジネスロジック)と混在させることも回避します。簡単な例:

    class User {
        public $id;
        public $username;
    
    }
    
    class UserMapper {
        /**
         * @param User $user
         */
        public function save(User $user) {
    
            if(isset($user->id)) {
                $statement = "Update users set username = ? where id = ?"
            } else {
                $statement = "insert into users set username = ?, id = ?"
            }
            $instance = db::getInstance();
            $sth = $instance->prepare($statement );
            $values_a = array($user->username, $user->id);
            $db_result = $sth->execute($values_a);
        }
    
        /**
         * @param int $userId
         * @return User
         */
        public function load($userId) {
            $statement = "select * from users where id = ?";
            $instance = db::getInstance();
            $sth = $instance->prepare($statement );
            $values_a = array($user->id);
            $db_result = $sth->execute($values_a);
            $returnUser = new User();
            $returnUser ->id       = $db_result[0]['id'];
            $returnUser ->username = $db_result[0]['username'];
            return $returnUser;
        }
    }
    

    メンバーに直接アクセスする代わりに、ゲッター/セッターを使用することもお勧めしますが、これはコードを単純化するためです...より多くのモデル/マッパーを開発すると、一般的なマッパー機能(保存、読み込み、削除、検索)が見つかります。共通のロジックを含むようにコードをリファクタリングできるため、コピーパスタが大量に発生することはありません。




    1. SQLServerのSQLテキストを検索してREPLACE関数で置き換えるための上位5つの事実

    2. .net用の代替Oracleドライバ

    3. SQLServerでONUPDATECASCADEを使用して外部キー制約を作成する方法-SQLServer/TSQLチュートリアルパート79

    4. Node.jsはMySQL8.0に対して認証できません