Building software applications can be a complex, time consuming process, however utilizing a framework can help you develop projects faster (by reusing generic components and modules), and work better (building on one unified structural foundation). Using a framework also facilitates scalability and long-term maintenance by complying with development standards, keeping your code organized and allowing your application to evolve and grow over time.
PHP frameworks help you to write clean and reusable code. It follows the MVC pattern, ensuring a clear separation of logic and presentation. But there is a much discussion all around because some prefer performance, some prefer better documentation, some prefer amount of built-in functions etc.
Zend Framework 2 and Symfony 2 are the two frameworks that are often compared. Which one is more functional? Which one is more preferable in terms of productivity? Which one is better for general understanding? Let’s try to find the answers together.
Zend Framework 2
Zend Framework 2 is an open-source framework for developing web applications, using object-oriented code. The components in the standard library form a powerful an extensible framework when combined, offering a robust, high performance MVC implementation. It’s easily extensible, adapting to your needs, with a modular base so you can use building blocks in combination with other applications or frameworks.
Using the ZendService you can implement client libraries to access the most popular web services available. As Zend is a collection of classes, you can just load the components you need, to take advantage of the components as individual libraries, instead of the framework as a whole, cutting down on unnecessary project bloat. With no model implementation you are free to implement the framework and components in whatever way you need, free of predefined restraints.
Zend Framework 2 advantages:
- Modularity is perfected in it – it has beautiful ways to make your code modular and forces you into good design patterns to make it so;
- Some things are very well thought out: for example for each session container you can define its time-to-live and number of hops (page requests) it will last;
- Modules exist for a lot of things, which is always nice. However, most modules aren’t very mature so you won’t find a solution to every problem there, or you will have to reinvent the wheel because module’s author didn’t write it in the way that you would like;
- Things are abstracted away beautifully in this framework, which means you have a lot of control over everything.
Zend Framework 2 disadvantages are the following:
- There is no ORM implemented out of the box. While there is a solid query builder and ways to interact with database, if you want ORM you need to use third party modules;
- Documentation is written in a tutorialish manner, meaning information is dumbed down and simplified and lacks a lot of important stuff;
- So, the only way to really learn it is to browse the code. Zend does a great job of abstracting things away and letting you program by contract, but try digging into its code and you will find it hard to follow. The execution of code isn’t linear, it rather depends on events and forces you to adhere, so it’s very hard to follow what part of code is calling which event and what kind of magic happens to every object in the execution flow.
Available in its version 2, Symfony is an excellent PHP Framework for creating websites and web applications. It has been built on top of Symfony components such as Drupal, Ez Publish and phpBB. Backed by a huge community of Symfony fans, it is believed that the framework will go to a whole new level in the forthcoming years.
Symfony is used to build high end web applications at reduced costs and development times. It is a native PHP 5 framework and makes use of the latest PHP 5. It helps streamline web application development by automating similar patterns in development. This essentially means that every time the same function is required, you need not re-invent the wheel. A framework makes the code more structured, better and maintainable.
Symfony2 has been tried and tested for a host of real world applications and business websites. The high demanding e-businesses or ecommerce businesses also prefer Symfony as a framework for development. Well, Symfony is also compatible with a number of databases that are used at the backend including MySQL, PostgreSQL, Oracle, and Microsoft SQL Server.
The advantages of Symfony 2 are:
- Symfony is feature rich. Both Zend and Symfony have a kitchen-sink approach, but Zend is much lower level;
- Symfony is expandable. Everything is presented as a bundle in Symfony. Each bundle adds functionality to the framework. These frameworks can be used for other projects too and functionalities can be added as per business requirements. Businesses benefit from the ability to add as many features and innovative features as required;
- It’s fast and takes us less system resources. Symfony was built to be fast. It is said that Symfony2 is three times faster than its predecessor Symfony 1.4 and Zend Framework too. It’s also a known fact that Symfony2 takes 2 times less memory. These are great performance statistics and businesses can easily take advantage of these to create high performing apps and ease business processes and work more efficiently;
- Symfony 2 is also known for its stability and sustainability. The framework is robust and can be used to create large enterprise websites too;
- The structure and code is very intuitive.
As for Symfony 2 disadvantages, we can say that Symfony 2 takes learning. Documentation is quite useful, but very tutorialish. You can’t dive into development without spending some hours reading first so you can figure out how to do it properly.
Both frameworks may be utilized for large websites or web apps, and both are excellent choices to develop either one. Symfony 2 is better for general understanding because with this framework it is easy to create new projects from scratch, and you can create your first prototype really quickly and advance from there on. While Zend Framework 2 feels over-engineered, written by people who know a lot about PHP but have developed very few sites in it, Symfony 2 feels very natural and has a solution to most common problems.
Zend Framework 2 and Symfony 2 belong to the same enterprise niche. Their quality and complexity is at the same level, and both of their functionality allows for highly professional web application development. However, in Altabel Group we believe that Symfony 2 is slightly better than ZF 2, according to a number of factors mentioned in this article.
Please feel free to share with us your thoughts what you choose for your projects – Symfony 2 or Zend Framework 2.
Thank you for your attention and looking forward for your comments.
Thanks for this great article. Please give more about why Symfony2 is better than ZF2.
Would it not be lovely if the two would join forces. Zend focusing on the server and symfony on the framework.
Thank you for your article. I have never tested symfony but what i can say from my experience with ZF is that the ZF1 is more fast that the ZF2. That’s why i keep my websites on ZF1 with a lot of internal modifications in the source code of ZF1 to improve it and keep it for myself and my projects.
I have worked almost 3 years with ZF2, it is extremly flexsible allowing to find a solution for almost everything. Also in ZF2 does not have ORM, because it has TabletGateway, in my opionion much more high performant then inserting an ORM like doctrine (a performance killer)….
quote “but Zend is much lower level;”
Dude go kill ur self and learn litle about design patterns. Omg i cant understand waht u say…. So whay is ZF lower level? U think ZF is Codeigniter? U prob dont have enoguth knowledge in php oop and than u can say zf is low…. Again kill ur self!!!!
You know he didn’t mean “lower level” as in “worse”, right?
low level does not mean its non performant or bad, I’ve used ZF2 but not symfony, I like how Zend coming from the Java side there are similarities esp. the modularity.