これは、私が開発するたびに私を悩ませている長期にわたる質問です。
CodeIgniter に固有のものではないと思いますが、私はそれを使用しているので、私の例で検討します。
まず、どちらが良いですか:
function add_entry($data_array)
{
//code to add entry
}
function edit_entry($data_array)
{
//code to update entry
}
また
function save_changes($what,$data_array)
{
//if what == update update
//otherwise insert
}
どちらも同じアクションを生成しますが、どちらを使用するかは本当に重要ですか?
より複雑なことに取り掛かる。
データベースから 1 つのエントリを取得する必要があるページがあります。
ユーザー指定の列で並べ替えられた同じデータベースからすべてのエントリを取得する必要があるページもあります。
私の結果のメソッドは、次のような関数です
function($data_array,$order_by='',$limit='')
{
//get where $data_array
//if order_by!='' add order by
//if limit !='' add limit
}
アプリケーションを開発し、「同様の」データベース機能が必要な新しい場所に気付くと、以前の方法をハッキングしたような気がして、すべてのケース シナリオで機能します。メソッドには多くの条件ステートメントが含まれ、場合によっては 4 つまたは 5 つの入力パラメーターで非常に複雑になります。
ポイントを逃しましたか?私は重複したコードを望んでいません。また、大部分の機能が非常に似ている場合、この「ハッキング」方法論が最もうまく機能するように感じます。
誰かがアドバイスできますか?
最後に、私の管理機能は、管理コントローラー内の同じアプリケーションの一部です。管理データベースとのやり取りのための特定のメソッドを含む管理モデルがあります。ただし、「ユーザー」モデルのモデル機能をいくつか使用しています。
たとえば、管理ページでデータベースエントリの詳細を取得する必要がある場合、ユーザーモデルをロードしてこの機能にアクセスできます。これについて間違っている/安全でないことは何もありません..? 右?
管理モデル自体に加えて、ユーザー データベース エントリに関するデータを取得する必要があるため、管理モデルから直接ユーザー モデルを呼び出します。これは厳密には問題ありませんが、なぜですか? データが必要で、それを取得するユーザー モデルに既にメソッドがある場合..管理モデルのコードを書き直すのは少し無意味に思えますが、その関数が呼び出されるたびに、ユーザー モデル全体が再度読み込まれますか?
どうもありがとうございました。