I wrote this, it's a kind of polished scaffold. This is basically a class whose constructor accepts the table to be used, an array containing the names and types of fields, and an action. Based on this action, the object calls the method on its own. For example:
This is the array I pass in:
$data = array(array('name' => 'id', 'type' => 'hidden') , array('name' => 'student', 'type' => 'text', 'title' => 'Student'));
Then I call the constructor:
new MyScaffold($table, 'edit', $data, $_GET['id']);
In the above case, the constructor calls the "edit" method, which represents a form that displays data from the $ table, but only the fields that I set in my array. The record used is determined by the $ _GET method. In this example, the field βstudentβ is represented as a text field (hence the type βtextβ). "Title" is just a shortcut used. Being "hidden", the identifier field is not displayed for editing, but is available for use by the program.
If I passed 'delete' instead of 'edit', it would delete the entry from the GET variable. If I gave only the table name, then by default there would be a list of records with buttons for editing, deleting, and a new one.
This is just one class containing all CRUDs with great customizability. You can make it complex or simple as you wish. By making it a universal class, I can drop it into any project and simply pass instructions, table information, and configuration information. I might not want for one table to have new entries added through the scaffold, in which case I could set "newbutton" to false in my parameter array.
This is not a framework in the usual sense. Just a standalone class that handles everything internally. There are some disadvantages. The key should be that all my tables should have a primary key with the name "id", you can leave without this, but this will complicate the situation. Another creature is that a large array detailing information about each managed table needs to be prepared, but you only need to do this once.
For a tutorial on this idea see here