I’m curious, what are the advantages (and disadvantages) on using a framework with PHP?
I’ve been using PHP on and off since version 3. I’ve never used any of the frameworks available for PHP, so what am I missing out on?
Framework abstracts you from low level details, makes you more productive, and protects you from low level error ( such as preventing SQL injection attacks).
A good PHP framework forces you to separate your concern and implements the proven architecture, which in the end improves your design, and makes your code much easier to read and maintain and unit test.
Why use a Framework?
(I am a Symfony developer and so I will answer in a way revolving around Symfony. There are other frameworks that have similar functionality, however, in my opinion none are quite as comprehensive or well written as Symfony).
Quoted from the Symfony Web site:
A framework streamlines
application development by automating
many of the patterns employed for a
given purpose. A framework also adds
structure to the code, prompting the
developer to write better, more
readable, and more maintainable
code. Ultimately, a framework
makes programming easier, since it
packages complex operations into
Symfony is a complete framework
designed to optimize the development
of web applications by way of
several key features. For starters, it
separates a web application’s business rules, server logic, and
presentation views. It contains
numerous tools and classes aimed at
shortening the development time of a
complex web application. Additionally,
it automates common tasks so that
the developer can focus entirely on
the specifics of an application. The
end result of these advantages means
there is no need to reinvent the wheel
every time a new web application is
Symfony is written entirely in PHP
5. It has been thoroughly tested
in various real-world projects, and is
actually in use for high-demand
e-business websites. It is compatible
with most of the available databases
engines, including MySQL, PostgreSQL,
Oracle, and Microsoft SQL Server. It
runs on *nix and Windows platforms.
Let’s begin with a closer look at its
Symfony’s Features – I.e. What you are missing out on…
Most of the common features of web projects are automated within symfony, as follows:
- The built-in internationalization layer allows for both data and interface translation, as well as content localization.
- The presentation uses templates and layouts that can be built by HTML designers without any knowledge of the framework. Helpers reduce the amount of presentation code to write by encapsulating large portions of code in simple function calls.
- Forms support automated validation and repopulation, and this ensures a good quality of data in the database and a better user experience.
- Output escaping protects applications from attacks via corrupted data.
- The cache management features reduce bandwidth usage and server load.
- Authentication and credential features facilitate the creation of restricted sections and user security management.
- Routing and smart URLs make the page address part of the interface and search-engine friendly.
- Built-in e-mail and API management features allow web applications to go beyond the classic browser interactions.
- Lists are more user-friendly thanks to automated pagination, sorting, and filtering.
- Factories, plug-ins, and mixins provide a high level of extensibility.
- The built-in unit and functional testing framework provides the perfect tools to allow test-driven development.
- The debug panel accelerates debugging by displaying all the information the developer needs on the page he’s working on.
- The command-line interface to automate application deployment between two servers.
- The logging features give administrators full details about an application’s activities.
Do not reinvent the wheel
That’s what is all about. A framework have all the main functionality implemented using the best practices acknowledged through years of experience.
Well maybe because you can use C++ instead of PHP in the first case :).
A framework is used in order to achieve better goals in terms of quality, security etc. in less time using defined structures and implementations.
If you are not using already made framework, then you’re making your own but still a framework.
Speed of development for one. It also removes a lot of burdens that come with coding stuff manually (and yes it means don’t reinvent the wheel).
I guess frameworks are designed to speed up development of web services and admin sites. I use backvendor Yii extension and it really helps me to save time on the first stages.
A good framework guides you through best practices for your architecture and gives you somee often needed functionality in a proven and stable way. So you don’t have to reinvent the wheel all the time.