How to choose a PHP framework

No readers like this yet.
left and right brain

Opensource.com

PHP is one of the most popular programming languages around the world, and the recent PHP 7 release made this server-side programming language better and more stable than ever.

PHP is widely used in major projects. Facebook, for example, utilizes PHP for maintaining and creating their internal systems. WordPress uses PHP to power its internals, which in return is powering a huge portion of the web. Currently, PHP powers more than 82% of websites (whose server-side programming languages the Web Technology Surveys site is able to track).

In this article, we'll look at three of the most popular PHP frameworks: Symfony, Laravel, and Yii. We'll examine how they compare to help you decide which one might be the best fit for your needs.

Why pick a PHP framework?

What's the point of using a framework instead of raw PHP to develop your application? A few benefits of using a framework include:

  • A PHP framework makes development faster. For example, you don't have to write complex queries to retrieve the data from the database. PHP frameworks provide CRUD operations (Create, Read, Update, and Delete).
  • Frameworks enable developers to scale systems easily.
  • Code maintenance is easier than with a vanilla PHP application. The application code is concise and easy to work with.
  • The MVC model ensures rapid development.
  • Frameworks are better in securing the web application from common security threats.
  • The don't repeat yourself (DRY) principle ensures that minimal code has maximum impact.

The above benefits are too significant to be ignored. Even though raw PHP can be used to create any application, the current development standards require tools and time-management skills to meet the market demand.

How to choose a PHP framework

Answering a few questions can help you choose a framework:

  1. What are the features and functionality of the framework? (Does it offer what I need?)
  2. What is the learning curve of the framework?
  3. How scalable is the framework?
  4. Is the framework actively developed and maintained by the core team?
  5. Does the framework provide long-term support (LTS support) ?
  6. Does the framework have a strong community support?

Symfony, Laravel, and Yii

Before diving into technical specifics, here's an overview of the contenders:

Symfony

Symfony is a set of reusable PHP components, enabling the developer to create scalable, high-performance applications. With 30 components from which to choose, the developer has the complete freedom to experiment and work in a RAD environment. Symfony APIs also enable easy integration with third-party applications, and it can be used with popular front-end frameworks, such as AngularJS.

Many popular projects, including Drupal and phpBB, also use a Symfony framework. In fact, Laravel, the most popular PHP framework, is build off of Symfony.

Laravel

Laravel, which is known as the "PHP framework for Web Artisans," offers an excellent community and wins as the most popular framework. (One of the leading Laravel developers on Livecoding.tv is Sfiskell.)

In May 2015 Laravel announced that version 5.1 will offer long-term support for two years. Version 5.2 rolled out in December 2015. Many hosting companies provide Laravel support and offer hosting solutions for Laravel applications. Check out the Built with Laravel site to see great example projects.

Yii

Created by Qiang Xue in 2008, Yii is a secure, fast, high-performance application/web-development framework. Yii utilizes the Composer dependency manager for PHP for handling different dependencies and installations (more on it later). Yii also is the fastest PHP framework, thanks to the lazy loading technique.

Another great feature of Yii is jQuery integration. The integration enables front-end developers to embrace the framework quickly, and it uses scaffolding to generate code. Similar to Symfony, Yii also utilizes components to enable rapid application development.

How they compare

All three frameworks are great for building Web 2.0 applications, but each framework serves a different purpose. Let's look at their features and how they stack up.

Templating engines

Templating engines minimize developer effort and provides better functionality in writing front-end code. Templating engines provide features such as automatic HTML escaping and filters, and fill the gap left by raw PHP.

Symfony Twig template system

Twig is a modern templating system for PHP. Symfony utilizes Twig to its advantage and enables developers to write clean, concise code and the ability to do more than with raw PHP. For example, it takes the following verbose code to write escaping:

Twig does the same with the following code:

{{ var }} {{ var|escape }} {{ var|e }} {# shortcut to escape a variable #}

See the Twig site to learn more about its features.

Laravel Blade templating system

Unlike other templating systems, Blade lets you use PHP code in the views. Also, Blade has zero overhead to application performance because the blade view files are stored in .blade.php extension. All the code in the view files is converted into raw PHP during processing.

Yii Default templating system

Yii doesn't utilize any third party templating system by default, but that doesn't mean it lacks templating system support. The choice of the templating system depends on the development team. Twig and Smarty are recommended. Symfony uses Twig, so if you have used Symfony in past, you might want to utilize Twig for your next Yii project.

There is no clear winner here. All three frameworks use templating engines for better front-end coding and maintenance. A small advantage to Yii is that the framework does not have a pre-defined templating system.

Framework differences

Every framework is created differently. Symfony works on reusable components and provides the best modularity. Symfony also utilizes the model and controller for developing a web application, which may look rusty for many new developers, but it works. Also, Symfony is a good example of the modular framework. You can use the 30 components provided by Symfony in your project in a modular fashion.

Yii uses an MVC framework. (Symfony does provide support for MVC, which is discussed in more detail in Is Symfony2 a MVC framework on the blog.sznapka.pl site.)

Symfony can be used for rapid development and complex projects. Even though there is a debate on which framework is better for complex projects, Symfony does showcase brilliant complexity handling compared to other frameworks. Yii also utilizes components, but is not as modular as Symfony. Laravel doesn't provide a modular approach as sharp as the other two frameworks.

If you are looking for a modular framework, go for Symfony. Otherwise, Laravel and Yii are both great choices.

Installation

The three frameworks provide multiple installation procedures. If you are using Composer for handling packages, you will be happy to know that all the frameworks can be installed via Composer.

For Symfony, the role of the Composer is more crucial. The idea of component handling is best done by using the Composer PHP dependency manager.

There are other ways of installing the respective frameworks. For example, you can install the frameworks using simple archive method.

After installation, Yii provides you with a web app and a basic template to work on. Symfony 2 also provides a demo app to get started.

Laravel is also easy to install using Composer create-project or via Laravel Installer. Check out the Laravel installation guide for details.

Rapid development

From the perspective of the company or the client, quickly getting the application to the market to meet consumer demand and beat competitors is important. Symfony stands out for being a robust framework with a strong community standing behind it. Laravel is growing rapidly, but still has a way to go before being considered the de facto choice for PHP development. On the other hand, if you have no knowledge of any PHP frameworks and want to get started as quickly as possible, consider Laravel. Laravel has an easy learning curve, and you'll find lots of tutorials online to help get you started. Yii takes performance to the next level, and provides code scaffolding for faster code generation and development.

Performance

The performance of any application only matters if it is a real-time application using critical data. How many web-based applications depend on high performance? Not many, but the performance of frameworks can play a crucial role in many projects.

Social networks are prime example of real-time events and one of our star streamers, jadson, built a mobile social network using Yii2. When it comes to choosing the best framework for coding a high-performance application, Yii stands out as the fastest PHP framework in our lot.

Laravel performance is highly debatable. It is slowest, but does that matter? You'll find online resources for speeding up performance, including a guide on GitHub for making your Laravel application faster.

Database support

Symfony 2 offers better database support. You can work with an array of databases, including NoSQL and DynamoDB. Yii and Laravel are also useful in this regard, but they support fewer databases than Symfony. The database supported by each framework is shown in Table 1.

Table 1
Framework Laravel Yii Symfony 2
 Database Microsoft BI
MongoDB
MySQL
PostgreSQL
Redis
SQLite

 

Microsoft BI
MongoDB
MySQL
Oracle
PostgreSQL
SQLite

Apache Jackrabbit
CouchDB
DynamoDB
GemFire GraphDB
MemBase
MemCacheDB
Microsoft BI
MongoDB
MySQL
NoSQL
Oracle
PostgreSQL

Community and resources

A big predictor for an open source framework's longevity is the strength of its community. All the three frameworks have solid communities, although Symfony's might be a bit more mature. Communities evolve, so predicting the dynamics of the communities in the future is challenging.

When it comes to learning material and documentation, Laravel stands out, although Symfony and Yii aren't lagging far behind:

Extendability

Frameworks are structures that can be extended with extensions or packages, improving their functionality and scope. When it comes to extensions, Laravel is the winner. Packalyst, a directory of Laravel packages, offers more than 9,000 packages. Yii and Symfony, on the other hand, offer around 2800 extensions and 2830 bundles, respectively. With three times the number of extensions, Laravel seems to be the best framework in this regard.

Similarities

We have looked at the differences between the frameworks. Now let's look at their similarities:

  • All three frameworks are full-stack PHP frameworks and offer the functionalities for creating web application, from front-end code writing to back-end data retrieval.
  • The projects are open source and their source code can be found on GitHub, making it easy for anyone to contribute:
  • The frameworks are well documented and supported by a large communities.
  • They each support ORM (Object Relationship Mapping). ORM is highly favored for writing OO code for your application.
  • They are robust, secure, and reliable for creating Web 2.0 applications.

Still stuck? Maybe these checklists will help you narrow down an option:

Symfony:

  • offers an LTS release,
  • comes with loads of features,
  • is currently the most stable framework,
  • is a component-based framework and offers extensive modularity,
  • and has a great community with lots of learning resources.

Yii:

  • comes with Ajax support,
  • is great for developing real-time applications as it offers faster operations,
  • is highly extensible.
  • error handling is spot on,
  • is good for creating Restful Web Services,
  • and has a great community with lots of learning resources.

Laravel:

  • is the most popular framework in 2015-2016,
  • supports Composer for package management,
  • does unit testing well,
  • offers tons of packages for extending framework functionality,
  • and has a great community with lots of learning resources.

Conclusion

In the battle of Symfony vs. Laravel vs. Yii, all three PHP frameworks are excellent options that provide a full-stack development environment for developers. For me, Laravel is a winner that is emerging as a star with no sign of stopping.

Still, Symfony and Yii are both excellent frameworks. Symfony is well-established and with a bigger, more mature community. Yii is a unique framework that is robust, secure, and gets the job done.

To see the frameworks in action, check out what developers are using them for on Livecoding.tv, which has channels for Symfony, Yii, and Laravel. The developers are also available on chat or Skype during streaming sessions. Follow the developers, ask them your questions, and get answers in real-time.

Additional resources

Michael Livecoding.tv
Dr. Michael is the founder and CEO of Los Angeles-based Education Ecosystem. Inc. (previously Livecoding.tv). Education Ecosystem (LEDU) is a project-based learning platform that teaches students how to build real products in areas such as programming, game development, artificial intelligence, cybersecurity, data science, and blockchain.

16 Comments

+1 for Laravel

will go for Laravel

good article.thnks

I think that Laravel is the best PHP web framework available today. It is easy to install and use.

I like yii, but i did used lav for a long time

I do Symfony and Laravel at work. But Laravel have bigger community. Great article

I think PHP will be even more popular after the release of php 7. There are many frameworks beside these ones but i still think Laravel will beat all of them in the popularity way...

Will go for YII2.

Yiiiiiii 1.x ;D

What, no CakePHP? :)

Seriously, it's a pretty solid framework that's been around for years. The 3.0 version released over a year also makes use of Symfony and I found the ORM is pretty familiar to Laravel's (another framework I'd looked at a few years back). For me, the real time-saver is the CLI code generator though.

I love Symfony :)

Technically facebook does not use PHP. They used to use PHP a long time ago. They have had a long run on ongoing development to compile php to c++. Their most recent (as far as I know off) is a JIT compiler named hiphop. Also, facebook uses a lot of c++ and other technologies as well. Saying facebook uses PHP for maintaining their internal systems is even not overstatement, its simply not true. I love PHP (as well) don't get me wrong. But use tools for what they are good at. It is never a good idea to build an infrastructure on PHP. Use it for microservices, use it for consumer applications. You might use it for trivial backend processes that don't need to scale. But dont try to use PHP as a one stop solution. It will cause headaches. It will slow down internal processes and it will reclaim the development time you saved by using php in the first place and it will happen long before you'll be like facebook.

Perhaps I should add that my statement should not be a real issue for most websites. Just don't expect PHP to be your friend when you are dealing with millions of requests, or background processes dealing with gigabytes or tens of gigabytes. Especially when you have to deal with different development teams that rely on eachothers processes. :')

yii is pretty good for mobile solutions. useful article.

i am a startup and For startups a huge plus for symfony comes from the fact that being highly decoupled, Symfony helps when you want to drastically replace a piece of software, or an adapter, with another one: for example, thanks to the dependency-injection container, you would be able to replace application services with others that have the same API, but a different implementation.

It is clear enough that Symfony provides the flexibility you need to reach a very short time to market and increases your developers’ awareness and efficiency by giving them the guidance and the tools they need to care about the domain of your services and not about how many bugs they would introduce by changing an untested piece of code.

Creative Commons LicenseThis work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.