PRADO (framework)

Print Print
Reading time 7:28

Prado Framework logo 2013.png
Developer(s)PRADO Group
Initial releaseSeptember 1, 2004 (2004-09-01)
Stable release
4.1.1[1] / 2020-03-27[±]
RepositoryPrado Repository
Written inPHP
Operating systemCross-platform
TypeWeb framework
LicenseModified BSD License[2]

PRADO is an open source, object-oriented, event-driven, component-based PHP web framework. PRADO's name is an acronym derived from "PHP Rapid Application Development Object-oriented".[3]


The PRADO project was started by Qiang Xue, and was inspired by Apache Tapestry.[3] The framework also borrowed ideas from Borland Delphi and Microsoft's ASP.NET framework. The first public release of PRADO came out in June 2004, but was written using the very limited and now outdated PHP 4 object model, which caused many problems. Qiang then re-wrote the framework for the new PHP 5 object model, and won the Zend PHP 5 coding contest with it.

PRADO is a rapid application development (RAD) framework, and in its infancy has been criticized to not be ready for high-performance, high-traffic scenarios. Implementations of template and configuration caching in later PRADO revisions eliminated most performance bottlenecks in its architecture, making it suited for the creation of medium- to high-traffic websites, while still providing a rapid way amongst PHP frameworks for the development of interactive web pages and applications.

In the late 2008, Qiang unveiled the Yii framework, a conceptual redesign of PRADO, targeted to high-performance, high-traffic scenarios. The following maintenance and updates to the PRADO project have been handled by community members of the project gathering on the project's Google Code page.[4] Since 2013, the project has moved to GitHub.[5]


PRADO features include the following:

  • A clean and extensible, dynamic, XML-conformant, tag-based templating system, similar to ASP.NET's, but designed for PHP's dynamic approach[6][7]
  • Clear separation of presentation and content, input handling and business logic, based on the model–view–controller (MVC) approach[8][9]
  • Data access objects (DAO), XML-based sqlmap data mapper, parameterized query builder, Active Record and automatic scaffolding[10][11][12][13]
  • Interactive client-side presentation layer based on the Prototype JavaScript Framework and effects library. It can however also use external controls based on jQuery and other JavaScript frameworks[14]
  • Form input and validation, supporting validation both on client- (for faster user feedback) and server-side (aiming to ensure data integrity and data security[15]
  • Ajax-enabled active widgets (such as auto-complete input field, active button, active data grid) which can be updated, shown or paged dynamically, without having to reload and re-build the whole page[16]
  • Built-in URL mapping support for search-engine-optimized and semantic URLs, which works without needing URL rewriting support from the web server[17]
  • Over 100 standard controls/widgets, including drag and drop, validation and data-bound controls[18][19][20]
  • Customizable data grid, with support of automatic generation of columns based on automatically discovered database schema[21]
  • Built-in authentication and authorization support[22]
  • Skinning and theming[23]
  • Internationalization and localization (I18N and L10N) support, including message translation, date and time formatting, number formatting, and interface localization[24]
  • Full support of Unicode and non-English custom code pages, including automatic transcoding between client- and server-side character sets[24]
  • Layered caching scheme, supporting separate caching of data queries and output fragments, via database, shared memory, memcached) for storing cached data, and dynamic cache entry validation upon retrieval[25]
  • Support for progressive rendering of pages, automatic script minification and on-demand lazy loading of client-side script and stylesheet files for faster loading of pages[26][27]
  • Error handling and logging, with errors handled and presented, and log messages optionally categorized, filtered and routed to different destinations[28][29]
  • Built-in security measures, which include cross-site scripting (XSS) prevention, HTTP cookie tampering prevention and SQL injection prevention[30]
  • Unit testing and functional testing based on PHPUnit, SimpleTest and Selenium[31][32]
  • Automatic skeleton application generation from the PRADO command-line tool[33]
  • Supports both XML-based and native PHP-coded configuration of application and run-time environments[34]
  • Code generated by PRADO components adheres to the XHTML standard[8]
  • Supports for creation and consummation of SOAP- or JSON-based web services[35][36]
  • Interoperability with third-party code, including PEAR and Laminas[37][38]


PRADO comes with a collection of official documentation, including a tutorial to develop a simple blog application, a reference guide describing all features, and a class reference for all properties, methods and events. The documentation is available in both HTML and Compiled HTML Help (.CHM) form.


PRADO is released under a Modified BSD License, which enables free use of PRADO for developing both open-source and proprietary web applications, without requiring distribution of the source code of derived works.

See also


  1. ^ "PRADO PHP Framework". Retrieved 9 June 2020.
  2. ^[permanent dead link]
  3. ^ a b "About PRADO". Retrieved 11 March 2012.[permanent dead link]
  4. ^ "prado3 - PRADO PHP Framework - Google Project Hosting".
  5. ^ "pradosoft/prado". GitHub.
  6. ^ "PRADO Documentation: Templates, Part I". Retrieved 2013-09-22.
  7. ^ "PRADO Documentation: Master and Content". Retrieved 2013-09-22.
  8. ^ a b "PRADO Documentation: What is PRADO?". Retrieved 2013-09-22.
  9. ^ "PRADO Documentation: Architecture". Retrieved 2013-09-22.
  10. ^ "PRADO Documentation: Data Access Objects (DAO)". Retrieved 2013-09-22.
  11. ^ "PRADO Documentation: Data Mapper". Retrieved 2013-09-22.
  12. ^ "PRADO Documentation: Active Record". Retrieved 2013-09-22.
  13. ^ "PRADO Documentation: Active Record Scaffold Views". Retrieved 2013-09-22.
  14. ^ "PRADO Documentation: Javascript in PRADO, Questions and Answers". Retrieved 2013-09-22.
  15. ^ "PRADO Documentation: Validation Controls". Retrieved 2013-09-22.
  16. ^ "PRADO Documentation: Active Controls (AJAX enabled Controls)". Retrieved 2013-09-22.
  17. ^ "PRADO Documentation: URL Mapping (Friendly URLs)". Retrieved 2013-09-22.
  18. ^ "PRADO Documentation: Standard Controls". Retrieved 2013-09-22.
  19. ^ "PRADO Documentation: List Controls". Retrieved 2013-09-22.
  20. ^ "PRADO Documentation: Data Controls". Retrieved 2013-09-22.
  21. ^ "PRADO Documentation: TDataGrid". Retrieved 2013-09-22.
  22. ^ "PRADO Documentation: Authentication and Authorization". Retrieved 2013-09-22.
  23. ^ "PRADO Documentation: Themes and Skins". Retrieved 2013-09-22.
  24. ^ a b "PRADO Documentation: Internationalization (I18N) and Localization (L10N)". Retrieved 2013-09-22.
  25. ^ "PRADO Documentation: Performance Tuning". Retrieved 2013-09-22.
  26. ^ "PRADO Documentation: New Features". Retrieved 2013-09-22.
  27. ^ "PRADO Documentation: TClientScript". Retrieved 2013-09-22.
  28. ^ "PRADO Documentation: Error Handling and Reporting". Retrieved 2013-09-22.
  29. ^ "PRADO Documentation: Logging". Retrieved 2013-09-22.
  30. ^ "PRADO Documentation: Security". Retrieved 2013-09-22.
  31. ^ "PRADO GitHub: prado/tests at master - pradosoft/prado". Retrieved 2013-09-22.
  32. ^ "PRADO GitHub: prado/tests/test_tools at master - pradosoft/prado". Retrieved 2013-09-22.
  33. ^ "PRADO Documentation: Command Line Tool". Retrieved 2013-09-22.
  34. ^ "PRADO Documentation: Application Configurations". Retrieved 2013-09-22.
  35. ^ "PRADO Documentation: SOAP Service". Retrieved 2013-09-22.
  36. ^ "PRADO Documentation: RPC Service". Retrieved 2013-09-22.
  37. ^ "PRADO Wiki: How can I use PEAR libraries with PRADO?". Retrieved 2013-09-22.
  38. ^ "PRADO Forum: HOWTO - PRADO and Zend Framework". Retrieved 2013-09-22.

Edited: 2021-06-18 14:10:54