0

PHP アプリケーションのクラスを開発しています。コードは、ほとんどのロジックがクラスに存在する、よりオブジェクト指向のアプローチに移行されています。この開発の早い段階で、データベースから情報を取得するための個別の関数を作成しました。

function getUserID($id)
function getMemberID($id)
function getUserEmailAddress($id)
function getUserFullName($id)
function getAnalysisConditionId($id)
...
etc.

データベース内から個々のフィールド要素を引き出すための関数がたくさんあります。実際、データベース内の約 50% のフィールドに対して関数があると思います。これは少しやり過ぎで、別の方法で行うべきだと思い始めています。

関数 (getUserInfo($id) など) を作成することを考えました。この関数では、関連するすべてのフィールドを返すことに関連する結合を含め、User テーブル内のすべてのフィールドをクエリします。次に、結果のテーブルのすべてのフィールドの配列を返します。次に、アプリケーションのどこかでこの情報が必要な場合は、$class->getUserInfo($id)['id'] と呼ぶだけで済みます。

これはこれを行うための最良の方法でしょうか?アプリケーション全体ですべてのフィールドを使用できるようにする必要がありますか? ご意見ありがとうございます。

4

3 に答える 3

2

そこにあるいくつかのORMソリューションの1つをチェックする必要があります。私はDoctrineのファンです。基本的に、これらはすべてあなたに代わって管理し、多くの場合、アクセサーメソッドの生成にも役立ちます。

于 2012-05-21T20:21:28.397 に答える
0

ここで他の回答に同意し、既存のソリューションを検討することをお勧めします。ただし、本当にこれを自分で行いたい場合は、PHPの魔法のメソッドを使用して、これらすべてのゲッターメソッドを動的に作成できます。これを行う方法について簡単に説明しますこのコードを簡単に適応させて、例のような配列ではなく、データベースからデータを返すことができます。

しかし、実際には、既存のソリューションを検討する必要があります。これらのソリューションを使用すると、多くの頭痛の種を減らすことができます。

于 2012-05-21T20:32:00.670 に答える
0

Active Record の設計パターンを見てみましょう。それはあなたがやろうとしていることと似ています。

そして、他の人が示唆したように、基本的なことを一からやり直す必要はありません。単純に ORM を使用します (Doctrine2 は実際には PHP で最も人気があります)。

于 2012-05-21T20:22:08.177 に答える