pradosoft / prado
Component Framework for PHP
Requires
- php: >=8.1.0
- ext-ctype: *
- ext-dom: *
- ext-intl: *
- ext-json: *
- ext-pcre: *
- ext-spl: *
- bower-asset/clipboard: ^2
- bower-asset/highlightjs: ^9
- bower-asset/highlightjs-line-numbers.js: ^2
- bower-asset/jquery: ^3
- bower-asset/jquery-ui: ^1
- bower-asset/tinymce: ^5
- erusev/parsedown: ^1
- ezyang/htmlpurifier: ^4
- firephp/firephp-core: ^0
- mrclay/jsmin-php: ^2
- pradosoft/prado-tinymce3: ^3
- pradosoft/prado-wsdlgenerator: ^1
- pradosoft/tinymce-langs: ^5
- psy/psysh: ^0
Requires (Dev)
Suggests
- ext-apcu: Enables the use of TAPCCache as a cache handler
- ext-hash: Enables use of hash functions other than md5 and sha1
- ext-iconv: Used by some internationaization components
- ext-mbstring: Prado can use the mbstring extension for locale-aware string operations
- ext-memcached: Enables the use of TMemCache as a cache handler
- ext-openssl: Enables encryption of sensitive data, eg. page viewstate
- ext-pdo: Used by all the Prado\Data components, eg. TActiveRecord
- ext-soap: Used by TSoapService to provide a soap backend
- ext-xdebug: Useful to get stack traces on Php fatal errors
- ext-xsl: Used by the TXmlTransform component
- ext-zlib: Enables compression to reduce page size
- pradosoft/prado-demos: Demo applications for Prado
- dev-master
- 4.3.2
- 4.3.1
- 4.3.0
- 4.2.2
- 4.2.1
- 4.2.0
- 4.2.0-beta1
- 4.2.0-alpha3
- 4.2.0-alpha2
- 4.2.0-alpha1
- 4.1.2
- 4.1.1
- 4.1.0
- 4.0.2
- 4.0.1
- 4.0.0
- 3.3.3
- 3.3.2
- 3.3.1
- 3.3.0
- 3.2.4
- 3.2.3
- 3.2.2.05
- 3.2.2.04
- 3.2.2.03
- 3.2.2.02
- 3.2.2.01
- 3.2.2
- 3.2.1.02
- 3.2.1.01
- 3.2.1
- dev-csp
- dev-prado-4.3
- dev-test_fix
- dev-enums
- dev-prado-4.2
- dev-permissions
- dev-prado-4.1
- dev-prado-4.0
- dev-prado-3.3
- dev-prado-3.2
This package is auto-updated.
Last update: 2026-05-25 20:47:30 UTC
README
PRADO is a component-based and event-driven programming framework for developing Web applications in PHP. PRADO stands for PHP Rapid Application Development Object-oriented.
PRADO is best suitable for creating Web applications that are highly user-interactive. It can be used to develop systems as simple as a blog system to those as complex as a content management system (CMS) or a complete e-commerce solution. Because PRADO promotes object-oriented programming (OOP) through its component-based methodology, it fits extremely well for team work and enterprise development. Its event-driven programming pattern helps developers gain better focus on business logic rather than distracted by various tedious and repetitive low-level coding handling.
PRADO comes with many features that can cut down development time significantly. In particular, it provides a rich set of pluggable Web controls, complete database support including both active record and complex object mapper, seamless AJAX support, theme and skin, internationalization and localization, various caching solutions, security measures, object extensions with behaviors, composer integration with plugins, cron task manager, industry standard RBAC permissions, command line application interface, and many other features.
The PRADO framework and the included demos are free software. They are released under the terms of the LICENSE.
Install
The best way to install PRADO is through composer. If you don't use composer yet, first install it:
# download composer.phar curl -s http://getcomposer.org/installer | php # install it globally on the system mv composer.phar /usr/local/bin/composer
Then, create the application structure using composer:
composer create-project pradosoft/prado-app app
The application will be installed in the "app" directory.
Built-in PHP Test Web Server
The built-in PHP Test Web Server can be used to immediately start developing and testing a web application. The web server is started with command (assuming the above application in the directory "app"):
cd app/protected
./vendor/bin/prado-cli http
The application is then accessible on the machine's browser at http://127.0.0.1:8080/. The built-in web server is enabled when the application is in "Debug" mode or is enabled in the application configuration parameters.
Add PRADO to an existing application
Just create a composer.json file for your project:
{
"repositories": [
{
"type": "composer",
"url": "https://asset-packagist.org"
}
],
"require": {
"pradosoft/prado": "^4"
}
}
The asset-packagist repository is used to install javascript dependencies. Assuming you already installed composer, run the command:
composer install
Then you can include the autoloader, and you will have access to the library classes:
<?php require 'vendor/autoload.php';
PRADO Composer Extensions
PRADO 4.x supports Composer extensions to plug in new functionality directly into a PRADO application; such as new web controls, API integration, authorization, new services, analytics, custom behaviors, and CLI commands. 3rd party extensions can be found at Packagist - Prado4-Extensions. The community is encouraged to write and submit 3rd party PRADO 4 extensions for others to find and use.
PRADO provides a rich set of features for runtime extension of an application with composer extensions. Behaviors modify existing functionality and add new properties and methods to instanced run-time objects. Class-wide behaviors add default behaviors to classes, interfaces, and traits when instancing new objects and to "listen"ing instances. "Global Events" enable extensions to communicate with other extensions without knowledge of application configuration. "Dynamic Events" enable objects to communicate with their attached behaviors with direct function calls.
The example PRADO Composer extension has its own manifest, Module, web page, and error messages. It can be included in an application with the following command:
composer require --prefer-dist pradosoft/prado-composer-extension "*"
Once downloaded and installed in composer, an extension is activated by adding the Composer Extension Name as a new module ID in the application configuration file application.xml or application.php. To include the example extension "pradosoft/prado-composer-extension", the PRADO configuration would include this module xml:
<modules> ... <module id="pradosoft/prado-composer-extension" PropertyA='value1' /> </modules>
When using a Composer Extension as a module id, the class for the module is embedded in the Composer Extension Manifest and does not need to be specified.
Documentation
A great introduction to PRADO is available in the Quickstart tutorial. The tutorial itself is a PRADO application included in the demos The complete API documentation can be found on the API Manual
Demo Apps
Several different example PRADO applications are provided in the https://github.com/pradosoft/prado-demos repository. You can see these applications running here: http://www.pradoframework.net/site/demos/ .
Integration with your favorite IDE/editor
Plugins providing syntax highlighting and code snippets can be found at https://github.com/pradosoft/editor-plugins
Contributing
In the spirit of free software, everyone is encouraged to help improve this project.
Here are some ways you can contribute:
- by using prerelease versions
- by reporting bugs
- by writing specifications
- by writing code (no patch is too small: fix typos, add comments, clean up inconsistent whitespace)
- by refactoring code
- by resolving issues
- by reviewing patches
- by writing your own composer extension for PRADO and posting it on Packagist
- by supporting and contributing to your favorite composer PRADO extensions
Starting point:
- Fork the repo
- Clone your repo
- Make your changes
- Write tests for your changes to ensure that later changes to PRADO won't break your code.
- Submit your pull request
Testing
PRADO uses phpunit for unit testing, PHPStan for static analysis, and Playwright for functional testing.
First clone the PRADO repository and install dependencies:
git clone https://github.com/pradosoft/prado.git cd prado composer devtools # composer install, npm install, playwright install
Run the test suites:
# PHP composer fix # php-cs-fixer code style fix composer stan # PHPStan static analysis of framework/ composer unittest # PHPUnit unit tests composer unittest -- --filter TApplicationTest # single test class composer unittest -- --filter testLogCronTask # single test method composer unittest -- --filter Web/UI # all tests in a directory composer fulltest # fix + stan + unittest combined (pre-commit check) composer stantest # PHPUnit tests for the custom PHPStan extensions # Playwright functional tests (PHP server on port 8037 starts automatically) composer functest # Chromium only (faster for local iteration) composer functionaltest # all three browsers (Chromium, Firefox, WebKit) # JavaScript composer jsfix # eslint JS code style fix composer jstest # Vitest unit tests for JS assets composer jsfull # eslint fix + Vitest
The Playwright suite starts a PHP built-in server automatically on port 8037 before any test runs and stops it afterwards — no manual server setup is needed.
Local Playwright test servers automatically terminate when the parent unit test process exits. If a stale Playwright server is left over from a previously killed run, stop it first:
pkill -f "php.*8037"
To run a specific test file or directory:
npx playwright test active-controls # specific directory npx playwright test --project=chromium # Chromium only
Test results will be saved in in the build/tests/ directory.
Generatting the API documentation
PRADO uses phpDocumentor 3 (https://github.com/phpDocumentor/phpDocumentor) to generate its API documentation. A phpdoc.dist.xml configuration file is provided, to generate the documentation just execute:
composer gendoc
The documentation will be generated in the build/docs/ directory.