DBFW is a PHP-based database framework for rapid application development and rapid prototyping.
DBFW project allows the creation of almost complete Web/database-based applications in no more than few hours, as well as faster development cycles.
It uses automatic DB schema discovery with XML configuration files to automatically implement a basic user interface that can be extended through the use of ad-hoc PHP code.
This framework aims to provide the developer with a tool that can be used first to iron out the database structure through as many iterations as required, but without forcing the developer to rewrite everything at every iteration.
It provides many features aimed to reduce this round-trip in the requirement and specification analisys phase, thanks to its ability to provide an auto-updating and working prototype of the user interface that can be used to access data from the DB under construction.
Here are some key features of "DBFW":
· autodetection of the entire DB schema. The framework engine will retrieve all required informations from the DB itself (like all user visible tables, foreign keys, column types, and so on). It will cache the discovered infos in a file under the directory cache/ of the application. If you change the schema, the tables, add/remove columns and so on, you will just need to remove the cache file and the framework will redo the discovery process.
· XML-based User Interface specification. The user interface of the application is specified through a set of XML files, which will contain the templates for the application forms and browsers as well as the application menus, the reports and so on....
· automatic handling of CRUD functionality. By default, it is able to provide support for creation, read, update and delete of records from all your tables.
· automatic handling of Foreign Keys. The framework knows all foreign keys defined among tables, and it will allow its automatic handling whenever you will say so. The automatic handling means navigable html links during the browsing of records from a given table as well as search or select widgets in the editing forms.
· multi database support. The framework uses a driver based interface for DB access, which means that new databases backend may be added later, by simply creating the related driver. The framework currently supports the following DB:
· PostgreSQL 7.3.X and later (The 8.X needs more tests, thought)
· MySQL 4.1.X and later (Check the driver specifications for known limitations)
· Oracle 9i and later (it should work, even if it hasn't been used by few years)
· The framework uses the PEAR library for DB access, so the its internal driver will add only the functionality required by the discovery process and few others not directly provided by the PEAR driver.
· simple creation of Reports. You can create a Report (or a group of Reports) simply by specifying the SQL query which generate the data and by choose the output, be it a textual one using a template, or a graphical one, using the GD library or a SVG generator. It supports the following output formats: HTML, PDF (still under development, thought), TSV (tab Separated Values) and XLS (Excel Spreadsheets);
· DHTML forms: hierarchical forms are implemented using DHTML so they are handled by the web client for the most part, avoiding unnecessary round-trips. (It should work with almost all recently web browsers).
· form nesting. This allows you to create nested forms for editing of related sets of records. All modifications to the set will be committed as a unique transaction, so they will fail or success as a whole.
· support for record history. You may create two additional columns in your tables (a start-of-validity one and a end-of-validity one), tell the framework of them and then it will handle all modifications as storicized modifications (i.e. the records will not be really deleted, just marked as expired).
· integrated support for PDF generation, through the external library html2ps based on FPDF
· dynamically generated menus: you can generate menus dinamically using SQL queries.
· internationalization: it supports full internationalization for both framework and applications using Gettext. They may be handled separately, so you can maintain your application messages indipendently from those of the framework.
· privileges: the framework will respect all privileges defined on the DB tables, as well as it will enforce additional privileges, like record based ones (yes, really record based... I need to document how they work, though... )
· automatic generation of user documentation: (Work In Progress) Since the application behaviour is specified for the most part in the XML configuration files, it's possible to process those files to generate automatically the core of the User Documentation. Of course, it still need to be completed and edited by hand, but this time you may concentrate on its content. BTW, the generated document will be in DocBook XML format.
· support for pop-up based details views.
· many more feature, like the handlers (PHP code which can be hooked to specific engine events like the decode event or the post_retrieve and so on), triggers (to allow the use of special triggers on DB that doesn't support triggers that access the tables under modifications, like Oracle and MySQL), foreign key and browser filtering, order-by handling, externally linked pages, and so on...
What's New in This Release:
· A new online help subsystem, a code cleanup, more work on the documentation, more support for data exports, and many bugfixes.