右側の写真の燃料プレフィルターがPHP \ IT全体にどのように関連しているかを誰かが尋ねるでしょうか? とても簡単です! 後で説明するスクリプトは、目的と機能の両方でこれらのデバイスと非常に似ています。 「超微細洗浄」の多かれ少なかれ普遍的なフィルター(この場合、ユーザーの希望を満たす)を実際に実装することは、必ずしも些細な作業ではないことを誰もが理解しています。 ただし、非常にシンプルなものを実装すると同時に、機能的で非常に適用可能なものは非常に現実的です。 実際、これは「本当の」ものであり、何を一緒に食べるのかということです。
PHPは私の主な職業ではありませんが、特定のデータをユーザーに表示するためにシンプルで機能的なデータフィルターを実装する必要がある状況に、何度も対処しなければなりませんでした。 最も単純な例は、ほとんどすべてのシステムの管理パネルです。 はい、開発者がPMAにアクセスして自分でパンを抜くのは簡単ですが、残念ながら、それらのほとんどは能力がなく、そうすべきではありません。
その結果、ほとんどの場合(データタイプに応じて、以下で説明します)、フォームの2つのデータ配列のみを送信するだけで十分なスクリプトを作成しました。
$FIELDS = array (
'active' => 'checkbox',
'sex' => 'select',
'type' => 'select',
'hp' => 'int',
'ep' => 'int',
'id' => 'int',
'bonus' => 'int',
'description' => 'text'
);
$NAMEFIELDS = array (
'active' => '',
'sex' => '',
'type' => ' ',
'description' => '',
'hp' => '',
'ep' => '',
'bonus' => ''
);
最初の配列は、フィルタリングに使用できるフィールドとタイプの列挙です。2番目の配列は、ユーザーインターフェイスのシンボル表示です。 現在、4種類の処理が実装されています。単一の数値(数字のみ)、事前に準備されたリストからの選択(選択タイプ)、テキストとブール値(はい/いいえ)です。 奇妙なことに、これはフィルターを事実上すべてのテーブルにねじ込んで検索するのに十分であることが判明しました。 上で説明したように、強力で複雑なクロステーブル検索のために、システムごとに異なる他のメカニズムが使用されます。
フィールドが複数選択の場合(たとえば、性別が男性\女性\ユニセックス)、次の形式の3番目のパラメーターが関数に渡されます。
$additional = array (
'sex' => $SEX,
'type' => $TYPES
);
ここで、$ SEXと$ TYPESは、可能な値のセットを持つ単なる配列です。
「あれこれ」のフレームワークの存在下で車輪を再発明する理由を誰かが叫ぶでしょうが、
1.私はフレームワークが好きではありません:)私たちは、なぜ、なぜ、これがこの投稿の範囲を超えて、すべてが独自の目的を持っていると主張しません
2.自分にとって都合の悪い何かをすることは常に良いことです。
スクリプトの例はここにあります (同じですが、OOPはこちら )。 リクエストを送信するとき、生成されたリクエストを単に返します。 ご覧のとおり、同じ基準を設定すると(たとえば、IDフィールドを複数回選択した場合)、より柔軟なデータ選択システムを取得できます。
しかし、私は発見などのふりをするのではなく、自分にとって便利で便利だと思うことを共有しています。 他の誰かに役立つかもしれません。 もちろん、コードはグループ開発のために研ぎ澄まされておらず、OOPのドロップも含まれていませんが、同時に、理解可能で、読み取り可能であり、何かを修正する必要がある場合/独自のタイプを作成するために\自分のために磨く-あなたはそれを行うと思います簡単に。 必要な人は-おそらく既にすべてを長い間行っているでしょうが、まだ時間がない人は-作者のロジックのエラーをスパイし、自宅で繰り返すことはできません。
要約すると、私は注意します
プラス
- ただ
- 十分に普遍的
- かなり機能的
短所
- この例では、GETリクエストが使用されています。 URLの長さは2048文字を超えてはならないことに注意する必要があります(誰もPOSTリクエストを使用する必要はなく、すべてタスクに依存します)
- クロステーブルクエリを実行できません
- 膝に書かれた:)
PSすべてのソースコードは 、 こちらのOOP からダウンロードできます(クラスから3つの関数のみを削除しました。これらの関数は、パブリック関数にすばやく関連付けられるため、外部にある方が良いです)
PPS誰も何もしません。