Introduction to PHP Frameworks
Before having deep insights into PHP Frameworks let’s talk about why we need frameworks and how they make the life of a developer easy?
Whenever we look to develop a website, many things in the architecture are to be placed in line before proceeding with the actual line like deciding how a web-based call will traverse its way from client side to server side, which without loss of generality incorporates checking the kind of request (Get, Post or Put), logging the audit trail, interceptor management, etc.
If you are looking to take vanilla approach without incorporating any frameworks then probably from call handling to security (like cross-site scripting), you have to manage all the instances, thereby likely to hire multiple developers for the same and which unfortunately will increase the cost of the application development.
Now let’s dive into what kind of frameworks we have for PHP development and choose the best one that suits our application to be developed (keeping in mind the business domain for which development is being done and how stringent are business rules).
List of PHP Frameworks
Here’s a list of the best PHP frameworks, based on popularity and ability to facilitate application development.
It’s an open source framework, following the model-view-controller based architecture. The various features provided by it are –
- Composer is available since Laravel 4 has come and it acts as a dependency manager to add framework-agnostic.
- Eloquent ORM, i.e. an active record pattern implementation.
- Query Builder provides a set of classes.
- Laravel inspires extremely clean and readable code, thereby keeping the life of developers easy.
- Laravel offers robust web application security as it incorporates password hashing, encryption, email verification, API authentication.
- Protected and safe routing is ensured, all Laravel routes are defined in the routes directory and these files are automatically downloaded by the framework.
- CSRF token is appended to URLs to prevent the cross-site forgery.
- Supports Redis (key-value store), pagination, migrations (sharing the database schema), database seeding,
- Server Requirements before working with Laravel.
It’s best to use Laravel Homestead virtual machine, so it’s highly recommended to use this as our local Laravel development environment.
If you are not using Homestead then following are required:
- PHP >= 7.1.3
- OpenSSL PHP Extension
- PDO PHP Extension
- Mbstring PHP Extension
- Tokenizer PHP Extension
- XML PHP Extension
- Ctype PHP Extension
- JSON PHP Extension
- BCMath PHP Extension
Laravel utilizes composer to manage its dependencies, so the prime requirement is that composer shall be pre-installed.
Then download Laravel installer using composer as given below.
Composer global require Laravel/installer.
- Creating a project via composer
Composer create-project – prefer-dist Laravel/Laravel blog
- Local Development Server
php artisan serve
CodeIgniter is an open source development framework, following are the features provided by it:
- It doesn’t ask for rigorous Model-view-controller implementation, the controller is mandatorily required, model and view are optional.
- Helper functions are there, like URL Helpers that assist link creation, Form Helpers are there, Text Helpers are there to format text and Cookie helpers are there to set and read cookies.
- You can create new libraries, replace and remove native libraries.
- Hooks feature provides a means to tap into and modify the inner workings of the framework without hacking the core files.
- The auto-load feature is there which permits libraries, helpers and models to be initialized automatically every time the system runs.
- CodeIgniter provides page caching feature thereby enhancing the performance.
- CodeIgniter has error logging class that permits error and debugging messages to be saved as text files.
- URI routing is there, the URL string is uniquely mapped to the controller.
- Password hashing is there for PHP version > 5.5
- In the database part, various provided features are QueryBuilder, QueryCaching, Transactions, etc.
- Environment variables can be set to decide from where the application has to be run i.e. either with development environment or production.
- How to install CodeIgniter –
- Download CodeIgniter from https://www.codeigniter.com/user_guide/installation/downloads.html
- Unzip the package.
- Upload the CodeIgniter folders and files to your server. Normally the index.php file will be at your root.
- Open the application/config/config.php file with a text editor and set your base URL. If you intend to use encryption or sessions, set your encryption key.
- If you intend to use a database, open the application/config/database.php file with a text editor and set your database settings.
Symfony is an open source software, Symfony components are a set of decoupled and reusable PHP libraries. It aims at the development of the robust enterprise applications and aims to give developers full control over the configuration from directory to foreign libraries and can be customized.
Symfony is incorporated with the following features –
- Localized routing (i18n) is provided, thereby the routes can be localized to provide unique paths per locale. With Symfony these routes can be written without duplication, wildcards are also supported.
- Twig templates are there, they are simple and don’t process the PHP tags, twig can do automatic HTML escaping, manual contextual output escaping and inclusion of some filters.
- Twig template caching makes process fast as templates are compiled to a native PHP class and cached.
- Asset component is there for URL generation and versioning of CSS, JS, and images.
- BrowserKit component is there to simulate the behavior of web browser, allowing to make requests, click on links and submit forms programmatically.
- Dependency injection component is there, that implements a PSR-11 compatible service container that allows standardization and centralization of objects in the application.
- DOMCrawler component is there to ease the DOM navigation for HTML and XML documents.
- Dotenv component is there to make environment variables stored in .env variables.
- Event dispatcher is there so that components can communicate via event dispatch and listening to them.
- LDAP component is already present to communicate with the LDAP server.
- The ExpressionLanguage component provides an engine that can compile and evaluate expressions.
- Polyfill/APCu component provides apcu_* functions and the ACPUIterator class to users of legacy APC extension.
- Serializer component is there to turn objects in formats like JSON, XML or YAML.
- Installation Steps
Use the following steps for downloads, composer shall be preinstalled in the system –
Composer requires symphony/asset
For the download of individual components as mentioned above, please visit –
CakePHP is an open source platform which makes building web applications simple and faster, requires less code. CakePHP comes with the following features –
- Provides scaffolding to rapidly build prototypes.
- There is a cache class in the CakePHP which supports the caching and provides the static interface and uniform API to interact with various caching implementations.
- Hash class provides static utilities that make proper array management thereby making code optimized.
- Inflector class is provided to manipulate provided string and handle word variations such as pluralization and camelizing.
- Logging is easy in CakePHP, the log() function is provided by the LogTrait.
- The fastest way to get up and running with REST is to add few lines to set up resource routes in the config/routes.php
- The validation package in CakePHP provides features to build validators that can validate arbitrary arrays of data with ease.
- Various plug-ins are supported for use in conjunction with CakePHP and they are Chronos (provides a zero-dependency collection of extensions to the DateTime object), DebugKit (has debugging toolbar and enhanced debugging tools), ElasticSearch (provides an ORM like abstraction on top of elasticsearch, makes testing and indexing of documents easy).
- Phinx and CakePHP, phinx allows the developers to alter and manipulate databases in a clear way. No need to hand write SQL, rather phinx provides powerful APIs for creating migrations using PHP code.
- Bake console is provided to run CakePHP faster, bake console can create models, views, behaviors, test cases, fixtures, and plugins.
Phinx can be simply installed by:
php composer. phar require robmorgan/phinx
Middleware support is there so that we can wrap our application into reusable and composable layers of request handling or response building.
- Installation and Pre-requisites :
Let’ s describe certain pre-requisites which are to be satisfied before we start with the installation :
- HTTP Server ( Apache, Nginx or Microsoft IIS)
- PHP 7.3
- mbstring PHP extension
- intl PHP extension ( if using XAMPP, intl extension shall be included but make sure to uncomment extension = php_intl.dll in Php.ini and restart the XAMPP server through control panel, in case you are using WAMP, the intl extension is activated by default, just you have to do is to go to php folder and copy all files synonymous to icu*.dll and paste them to apache bin directory, then restart the services ).
- simplexml PHP extension
- PDO PHP extension
- Any databases among given list shall be installed in your machine :
- MySQL ( v5.5.3 or greater )
- MariaDB (v 5.5 or greater)
- Microsoft SQL server ( >= version 2008)
FuelPHP is an open source framework, fast and compatible at PHP 5.4+ versions, the incorporated features are listed below –
- Its is MVVM type of framework that is not only limited to model-view-controller but also carries model-view-ViewModel approach. The viewModels are also called presentation models.
- FuelPHP supports router based approach allowing us to write the URI directly.
- Supports the CSRF tokens to prevent the cross-site scripting forgery.
- Input filtering and query builder helps in SQL injection.
- Auth framework is supported for secure authentication purpose.
- FuelPHP provides a CLI called “oil”, designed to speed up the development, testing assistance and debugging. It also helps to run database migrations.
- Some base classes are provided to the controllers and models so that the developers can have a flying start, such features are – Controller_Template ( add simple page templating functionality to the controllers), Controller_Rest ( way for RESTful API creation), Controller_Hybrid (combine two features into a single controller), Model_crud (provides all methods for CRUD operations in a single table).
- Lightweight ORM provides an object-oriented way of working with database data and performing CRUD, relationship likes has-many, many-many are there, cascading saves and deletes for related objects. Observers are there to update object instances.
- Security incorporates Auth framework and has integrated the Opauth library and provides various other features like Role Based Access Control (RBAC), secure hashing function for passwords, OAuth integration for social media authentication.
- There are template parsers for enhancing views from simple PHP, numerous libraries are there for it :
- Installation Steps –
Please follow the given steps for the same –
$ curl https://get.fuelphp.com/oil | sh
The project can be created using
$ oil create <sample_project>
$ composer create-project fuel/fuel –prefer-dist
Conclusion – PHP Frameworks
In the above documentation, we cited multiple PHP Frameworks used for carrying multiple features for code development. Analysis of the requirements and design patterns to be followed shall be discussed first before picking any of those. The frameworks had diversity and provided various plug-ins for making logging and metrics tracing to be there.
The framework named as Lumen by Laravel is highly appreciated while looking for microservices development as microservices architecture is different from monolithic applications, the logging mechanisms, database handling, Auth security, and implementation are of prime concern before coding.
Another thing to be taken care of while opting a framework is the domain for which application is being designed like either it is the banking and the financial services, supply chains management, life sciences, retail or social networking.
Because based on these domains we have to incorporate plug-ins and designs for taking care of distributive tracing, service retry attempts, etc.
Hence a coder can proceed with any of the cited frameworks after assessing the features in close conjunction to the application.
This has been a guide to PHP Frameworks. Here we have discussed the list of PHP frameworks with their features and the installation steps. You can also go through our other suggested articles to learn more –