2

率直に言って、私はオブジェクト指向プログラミングにまったく慣れていません。私は、C などの手続き型コードに精通しています。

基礎となるフレームワークとしてphpを使用してWebサイトの設計を開始しました。もともと、プロシージャル スタイルのデザインにこだわっていました。それはすぐにかなり面倒になりました。言うまでもなく、オブジェクト指向のアプローチを使用したいと考えています。そうする機会がたくさんあります。

特に 1 つは、データベース (この場合は MySQL) へのアクセスに関するものです。

現在、データベース クラスをどのように設計するかを決定しています。明らかに、PHP の PDO を介した接続が組み込まれます。しかし、それ以外のクラスに何を含めるかについては、私は立ち往生しています。明らかに他のメソッドを含めることができますが、どの程度までですか? たとえば、MySQL クエリ、挿入、削除などの関数も含める必要がありますか? これらは定期的に呼び出す必要がある一般的な関数なので、それらすべてを同じクラスに含めるべきではないでしょうか? そうでなければ、4 つ以上の異なるクラスを作成する必要がある場合、クラスを使用することはほとんど無意味に思えますか?

経験者の方、助けてください!ありがとう!

4

1 に答える 1

1

独自の単純なラッパー クラスを作成するというアイデアが気に入っています。将来、別の db ライブラリに切り替えたい場合は、ラッパー クラスのコードを変更するだけです。

私が働いている場所では、php mysql 関数のラッパー クラスを作成しました。メインのmysqlサーバーが本番環境にあり、レプリケーションを備えた追加のサーバーがある本番サーバーとテストサーバーがあります。私たちのラッパーは、データをプルするためにどこに接続するかを判断します - 選択のためだけにレプリカントに接続する場合があります。接続する可能性のあるすべてのデータベースへの資格情報は、使用を簡素化するラッパーで定義されます。クラス メソッドは、SQL を実行し、1 つまたはすべての行をフェッチして配列にダンプし、データをエスケープし、最後の ID を返すなどです。各 SQL ステートメントに有用な情報 (クエリが実行されたファイルなど) を含むコメントを追加するメソッドもあります。デバッグを容易にする。

データを配列に取得する例:

$db = MysqlWrapper('db_name');
$data = $db->fetchAll($query);

後で同じコードで、同じインスタンスを使用して update または insert を発行できます。

$db->execute($query);
于 2012-09-16T07:05:26.747 に答える