How is RADICORE unique?

The product is unique among PHP frameworks for the following reasons:

  1. It is aimed at restricted-access administrative web applications, not unrestricted web sites.
  2. It functions with both PHP 4 and PHP 5, unlike some other frameworks which are PHP 5 only.
  3. It provides a toolkit for building components as well as a framework for running those components.
  4. It is based around transaction patterns, not design patterns, which greatly assists in the development of UI components.
  5. Each transaction pattern provides basic facilities as standard which do not require further action by any developer - menus, security, navigation between components, the passing of context between components, pagination (for list screens), scrolling (for detail screens), column sorting, copy and paste buttons, etc.
  6. It has a transaction generation facility which automatically creates the necessary components for a transaction using nothing more than the name of the database table and the name of the pattern.
  7. It enforces a strict separation of UI logic, business logic and data access logic.
  8. It enables basic, fully functioning components to be created without the need for the developer to write any HTML or SQL.
  9. It uses a Data Dictionary which expands on the information schema within the RDBMS to provide additional information for use by the application. A simple 'export' function then makes this information available to the application components.
  10. Business layer components, which are based around database tables, are initially created by the Data Dictionary 'export' function. The use of inherited code enables these to be used to perform CRUD operations on the database without the need to write any SQL.
  11. All HTML output is created by XSL transformations which can be performed either on the server or the client (if the client has an XSL-enabled browser).
  12. The style of all HTML output can be customised through the use of CSS files.
  13. All SQL strings are generated at runtime using information generated from the Data Dictionary. The standard SQL can be customised within each business layer component.
  14. Information which is maintained on relationships in the data dictionary allows the framework to automatically generate the necessary JOIN clauses on sql SELECT statements. The relationships may involve multiple columns, multiple relationships between the same two tables, and even self-relationships.
  15. No database stored procedures or triggers are used, so the use of standard SQL makes it DBMS-independent.
  16. Standard HTML and CSS are used to make the framework as browser-independent as possible. Although Javascript s not used in any of the core components, provision has been made for it to be included in add-on applications as an option.
  17. It includes facilities for Internationalisation (I18N) by keeping all text for different languages in separate files so that different translations can be provided without having to change any core software.
  18. It includes a fully functioning Role Based Access Control system which provides the ability to define who has access to what within the system. User are grouped into roles so that the same access restrictions can be shared by many users.
  19. It includes an integrated Menu system which allows the required menu structure to be maintained within the database, not program code, which makes it dynamic instead of static. It uses information from the RBAC system to automatically filter out any options which the user is not authorised to access.
  20. It includes an integrated audit logging system which will allow any database updates to be written out to the audit database. These can then viewed using a standard set of screens. Individual database tables can be included or excluded from the audit process by a simple yes/no switch in the data dictionary. There is no need to customise any audit tables, database triggers or audit screens.
  21. It includes an integrated activity-based workflow system, designed around Petri Nets, which will enable the application administrator to define workflows to automatically pass control from one task to another when the correct conditions are met.
  22. It includes automatic session management to maintain the state of the application between requests. This allows, for example, one script to be suspended while another is processed. When a suspended script is reactivated it will resume it processing from where it left off. It is also possible for multiple independent sessions to be active on a single client.