私はまさにこれを書きました、それは洗練された足場のようなものです. これは基本的に、使用するテーブル、フィールド名と型を含む配列、およびアクションをコンストラクターが受け取るクラスです。このアクションに基づいて、オブジェクトはそれ自体でメソッドを呼び出します。例えば:
これは私が渡す配列です:
$data = array(array('name' => 'id', 'type' => 'hidden')
, array('name' => 'student', 'type' => 'text', 'title' => 'Student'));
次に、コンストラクターを呼び出します。
new MyScaffold($table, 'edit', $data, $_GET['id']);
上記の場合、コンストラクターは $table からのデータを表示するフォームを表示する 'edit' メソッドを呼び出しますが、配列に設定したフィールドのみです。使用するレコードは、$_GET メソッドによって決定されます。この例では、'student' フィールドがテキスト ボックスとして表示されます (したがって、'text' タイプ)。「タイトル」は単に使用されるラベルです。「非表示」であるため、ID フィールドは編集用に表示されませんが、プログラムで使用できます。
「編集」の代わりに「削除」を渡した場合、GET 変数からレコードが削除されます。テーブル名のみを渡すと、デフォルトで、編集、削除、および新規のボタンを含むレコードのリストになります。
多くのカスタマイズ機能を備えたすべての CRUD を含む 1 つのクラスにすぎません。必要に応じて、複雑にすることも単純にすることもできます。これをジェネリック クラスにすることで、任意のプロジェクトにドロップして、指示、テーブル情報、および構成情報を渡すことができます。あるテーブルでは、足場を介して新しいレコードが追加されるのを許可したくない場合があります。この場合、パラメーター配列で "newbutton" を false に設定することがあります。
従来の意味でのフレームワークではありません。内部ですべてを処理する単なるスタンドアロン クラスです。これにはいくつかの欠点があります。重要なのは、すべてのテーブルに「id」と呼ばれる主キーが必要であることです。これがなくても問題は解決できますが、問題が複雑になります。もう 1 つは、管理する各テーブルの詳細情報を示す大きな配列を準備する必要があることですが、これを行う必要があるのは 1 回だけです。
このアイデアのチュートリアルについては、こちらを参照してください