1

だから私はコードイグナイターを利用しています。

コードの再利用を可能にするために、モデルにはさまざまなものを取得する多くの関数があります。

例: get_details、get_features、get_products

次に、これらすべてのメソッドを呼び出す get_all という関数があるので、必要に応じてすべてを取得できますが、それ以外の場合は個別に使用できます。

だから私は自分のデータを持っていて、それを自分のビューに渡します。私のビューは各施設をループし、テーブルの行にさまざまなデータを表示します。

現在、たとえば if..else ステートメントを使用して、値が空かどうかを判別しています。したがって、施設に機能がまだ追加されていない場合は、次を使用します。

if(!empty($features['feature1'])){//DO STUFF e.g output 'YES'}

とにかく、私のビューコードは、本質的に get_all を使用して返された各配列のすべてのキーに対して、 if..else ステートメントを使用して「-」を出力しているため、かなり長く複雑になることはありません。

それは機能しますが、繰り返しのようです。

私が考えた回避策は、デフォルトですべてが「-」に設定されているデフォルト配列を設定するだけで、データが存在する場合は上書きされますが、大きなデフォルト配列を作成/開始するだけです..

したがって、私の質問は生命を脅かすものではなく、特に難しいことでもありません..いコードなしでそのような機能をどのように実現するかについて、私は単に興味があります.

乾杯

4

2 に答える 2

1

空の値を に設定することで、コントローラーの配列を「調整」できるかもしれません-

$features = array_map(function($value) {
    return empty($value) ? '-' : $value;
}, $features);
于 2012-12-04T18:34:15.050 に答える
0

実際のコードを投稿しない限り、一般的なアドバイスしか提供できません。通常、これを処理し、コードを統合してすべての条件を削除するには、キーを配列に入れます。

$keys_to_check = array('feature1', 'feature2', 'etc.....');

foreach ($keys_to_check as $key) {
  if (!empty($features[$key])) {
   // do something
  }    
}

これにより、これらすべての条件ステートメントが、より保守しやすいものにリファクタリングされます。

また、モデル コードget_allで 3 つのサブ関数を呼び出す一般的な関数を提供する場合、不要なクエリが実行されていないことを確認することが非常に重要です。自分自身を繰り返さず、3 つの関数を 1 つにグループ化するのは良いソフトウェア設計のようですが、これらの 3 つの関数がそれぞれ同様のクエリを実行すると、パフォーマンスが低下します。

于 2012-12-04T18:01:35.193 に答える