Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon
Mastering Symfony
Mastering Symfony

Mastering Symfony: Orchestrate the designing, development, testing, and deployment of web applications with Symfony

eBook
$9.99 $35.99
Paperback
$43.99
Subscription
Free Trial
Renews at $19.99p/m

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Table of content icon View table of contents Preview book icon Preview Book

Mastering Symfony

Chapter 1. Installing and Configuring Symfony

This chapter is merely a refresher for those who are pretty confident in using Symfony and an introduction for those who are quick learners! You can expect to read about how to install the Symfony Standard Edition package and manage its dependencies via Composer. After installation, we will check to make sure that everything is configured properly. The following are the main topics that we will talk about in this chapter:

  • Discussing Symfony
  • Using Composer and Packagist
  • Installing Symfony
  • Checking the installation
  • Running a PHP built-in web server

Why Symfony?

I don't like to talk about features, numbers, and statistics. I don't do detailed comparisons between frameworks as well. Instead, I'd like to share an experience with you. As a PHP developer, I worked for the New Zealand Herald newspaper for a while. Sure, they are not the oldest newspaper in the world, but in 2013, they celebrated their 150th anniversary, which makes it very clear that over the years, they have created layers and layers of code on top of each other and used or tried almost every framework and technology in their website and internal newspaper systems. Their repositories contain tons of legacy codes written in different languages. You won't believe it if I say different parts of their system were implemented in Perl, Java, C#, ColdFusion, and PHP, and there was (perhaps, still is?) an API layer that acts as a communicating bridge between all of them.

Due to many factors such as maintenance costs, in the past few years, people at the NZ Herald decided to migrate their entire applications and services into one integrated system; something that is reliable, efficient, and easy to expand and maintain. Having experienced many frameworks already, the solution architects at NZ Herald chose Symfony as their framework.

They realized that those colorful graphs and pretty pictures that compare benchmarking results for various frameworks are worth nothing when it comes to real-life problems. They experienced the efficiency of various frameworks in the day-to-day challenges and understood that no matter how fast the development speed might look at the beginning, the most important thing is how reliable it actually is and how much it costs when it comes to maintaining the project. They simply put a price tag on many factors including performance, abstraction, decouplement, portability, integration, and above all, how well organized the code base will be after spending several years and using several men for the development. Guess what? Symfony beat every PHP framework out there.

What I'm trying to say is that Symfony is not just another tool for web app or website development. It is a new culture for web development, a solid reliable foundation that you can build your project on top of with peace of mind. I call it a new culture because for the first time, I see that it has made various PHP communities talk to each other and work together. I believe this is the most important PHP achievement ever. In the years to come, we will see more about this movement.

Influenced by Symfony

I believe one of the main reasons why Symfony stands out of the crowd is the way it defines the Model-View-Controller (MVC) design pattern. This is the key: Symfony defines MVC while many other frameworks try to simply follow MVC rules. Can you see the difference? This means that Symfony contains MVC but does not constrain it. Have a look at the MVC definition and keep it in mind that as we continue the journey through the chapters of this book, you will see what I mean by this. Maybe, this is reason that other PHP frameworks and Content Management Systems (CMS) adapted the Symfony components and started to follow in its footsteps.

If you look at the following link, you will see the other great players such as Drupal, phpBB, Laravel, Composer, Doctrine, Behat, and many others who use and benefit from Symfony components:

http://symfony.com/projects

For those who concern themselves with performance and their judgment is blinded by Hello World benchmarking results, I can talk about large companies such as BBC, CBS, and many others who chose Symfony.

Please don't tell me that these big boys didn't do due diligence before making a big decision like choosing a framework. They know the amount of pressure their website receives on a hourly basis and they do care about the quality of their service. There must be a good reason that they chose Symfony over other frameworks. In a nutshell, Symfony helps have a better organized code that reduces the maintenance costs tremendously and, at the same time, it can benefit from modern caching systems such as Varnish, which help with a better performance. Chapter 12, Caching in Symfony is all about performance improvement and caching systems.

How bright is the future?

In December 2013, when Fabien Potencier—the creator of Symfony—announced that he raised seven million dollars to boost Symfony and its ecosystem, I literally dropped other frameworks and decided to invest and focus even more on Symfony.

It is clear to me if he was capable of making his mark without raising money, then from 2014 onwards, he will be able to make a huge impact on the PHP world.

Don't get me wrong; I've been using other frameworks and respect other teams who made an effort to create a web development tool with PHP. I have used famous frameworks such as Zend to domestic packages such as MySource Matrix and SilverStripe. As a hobbyist, I also try new libraries and ideas in the open source world. However, every PHP developer needs to choose a right direction and set of tools as his main weapon. For me, it is Symfony, and I can see that Symfony developers will be in even higher demand soon.

Note

Assuming that you are an experienced PHP developer and familiar with open source development, the tutorials in this book are provided for Linux and Mac platforms. I politely invite Windows users to install a VM application such as Oracle VirtualBox and any Linux distribution to follow the provided examples. You can download it from https://www.virtualbox.org/.

Installation

There are four ways to install the Symfony framework:

  • Download the archive file in the root of our project and unpack it there
  • Clone the project from GitHub
  • Use the Symfony installer tool
  • Use Composer to install it for us

The easiest way is to download the Symfony installer and make it publicly accessible via the following commands:

$ sudo curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony
$ sudo chmod a+x /usr/local/bin/symfony

Now create a new project simply by running the following command:

$ symfony new mava

As this command shows, it will ask the Symfony installer to create a new folder in the current path called mava, and when you hit enter, you will see that the Symfony source code will be downloaded to that folder:

Installation

Note

If you don't mention a version number or branch name in the installer command, it downloads and installs the latest stable version of Symfony.

In the list of things that we can do after installation is running the application immediately, without installing a virtual host. Thanks to the PHP built-in web server, we can run it via Symfony's console and browse the mava app at port 8000 on localhost:

$ bin/console server:run

The following screenshot shows how http://localhost:8000 looks like in your favourite browser:

Installation

Tip

Downloading the example code

You can download the example code files for this book from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.

You can download the code files by following these steps:

  • Log in or register to our website using your e-mail address and password.
  • Hover the mouse pointer on the SUPPORT tab at the top.
  • Click on Code Downloads & Errata.
  • Enter the name of the book in the Search box.
  • Select the book for which you're looking to download the code files.
  • Choose from the drop-down menu where you purchased this book from.
  • Click on Code Download.

You can also download the code files by clicking on the Code Files button on the book's webpage at the Packt Publishing website. This page can be accessed by entering the book's name in the Search box. Please note that you need to be logged in to your Packt account.

Once the file is downloaded, please make sure that you unzip or extract the folder using the latest version of:

  • WinRAR / 7-Zip for Windows
  • Zipeg / iZip / UnRarX for Mac
  • 7-Zip / PeaZip for Linux

Composer and Packagist

Composer is a dependency manager application that can be used to install PHP packages.

Some developers prefers Composer, not just because it is easy to use, but it is far more efficient when it comes to keeping track of the project dependencies. In fact, the main reason for creating Composer was to provide a reliable and consistent environment to develop PHP projects.

Imagine a team of PHP developers who work on the same project using various libraries and resources. Sometimes, it can be a nightmare if updating an existing library or installing a new one crashes the code of another developer in the team. Someone should be in charge of tracking all dependencies and controlling the updates and installs to make sure that the project development runs smoothly. In the past, that person used to be the lead developer, but thanks to Composer, the dependency management during development, staging, and production phases is handled automatically by Composer.

Let's get started by downloading Composer if you don't have it already:

$ curl -sS https://getcomposer.org/installer | php

Note

I presume that you have already installed the latest stable version of PHP and required extensions and libraries including curl. In case you don't have curl, you can install Composer via the following command:

$ php -r "readfile('https://getcomposer.org/installer');" | php

Move it to your /usr/local/bin folder so that it is accessible from everywhere in your machine:

$ sudo mv composer.phar /usr/local/bin/composer

Tip

Depending on the distribution of your Linux, this path might be /usr/bin instead. Use the echo $PATH command to find out about the location.

Composer is just a manager. It does not store any libraries or packages in itself. However, it works very closely with a package repository called Packagist to make sure that it gets the right packages with the correct dependencies. To do so, Packagist talks to Composer via a configuration file called composer.json, which contains many settings including dependency information.

Symfony Standard Edition is a package saved in https://packagist.org/. Go to the website and search symfony and you will see the Symfony framework along with a list of Symfony components as the search result:

Composer and Packagist

In this book, we will deal mainly with three Composer commands:

  • $ composer create-project [package] [/path] [version]: This creates a brand new project by downloading a specific version of a package to the specified directory
  • $ composer install: This installs a package and fetches all the dependent packages to your project
  • $ composer update: This updates the current packages

Let's see how to install the Symfony Standard Edition package via Composer.

Tip

Did you know that with the self-update option, you can upgrade the Composer to the latest stable version?

$ composer self-update

Installing Symfony via Composer

Fire a terminal and go to /var/www. I chose to install Symfony there to keep it simple and avoid different usernames and folders. Create a new folder called mava and set the ownership to yourself:

$ cd /var/www
$ sudo mkdir mava
$ sudo chown -hR <YourUserName>:<YourUserName> mava

Now type the following command:

$ composer create-project symfony/symfony mava/

As you can see in the following image, version 3.0.1 is the latest stable version. We can always choose a long-term support version if we want to take a conservative approach toward a project or we can choose the development version if we are crazy enough to ask for everything cutting-edge. Normal people like me always choose the latest stable version. In other words, it is a trade-off between the latest features and longest support:

Installing Symfony via Composer

If the installation process runs smoothly, you will see a bunch of packages being downloaded and installed to the /mava directory:

Using version ^3.0 for symfony/symfony
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing psr/log (1.0.0)
    Loading from cache

  - Installing doctrine/lexer (v1.0.1)
    Loading from cache

  - Installing doctrine/annotations (v1.2.7)
    Loading from cache

  - Installing doctrine/collections (v1.3.0)
    Loading from cache

  - Installing doctrine/cache (v1.6.0)
    Loading from cache

  - Installing doctrine/inflector (v1.1.0)
    Loading from cache

  - Installing doctrine/common (v2.6.1)
    Loading from cache
etc...

After Composer has finished downloading and unpacking all the dependencies, it will ask a couple of questions including sample demo, database settings, and mailer settings. Just accept the default answer by pushing Enter:

Creating the "app/config/parameters.yml" file
Some parameters are missing. Please provide them.
database_driver (pdo_mysql):
database_host (127.0.0.1):
database_port (null):
database_name (symfony):
database_user (root):
database_password (null):
mailer_transport (smtp):
mailer_host (127.0.0.1):
mailer_user (null):
mailer_password (null):
locale (en):
secret (ThisTokenIsNotSoSecretChangeIt):
debug_toolbar (true):
debug_redirects (false):
use_assetic_controller (true):

These settings will be saved in the app/config/parameters.yml file, and we always have a chance to change them later. If everything was okay, at the end, the cache will be cleared and the default assets will be installed as follows:

Installing Symfony via Composer

The road map

If you are concerned about how long your choice of the Symfony version is going to be supported, visit the http://symfony.com/roadmap page, scroll down, enter the version number, and push the Check button. You will see a detailed description about the support duration:

The road map

Checking the installation

To make sure that Symfony installed properly, first run the PHP built-in server:

$ bin/console server:run

Then, visit the following link in your browser:

http://localhost:8000/config.php

If you see the following image, then you are good to go. You can ignore the suggested recommendations for now:

Checking the installation

Summary

In this chapter, we read about the practicality of Symfony and the basic reasons why big companies are using it. We read about the Symfony road map and its potential. We ran the built-in web server to be able to see our Symfony instance. We saw how to use Composer to install Symfony and how to check the installation afterward.

In the next chapter, I will walk you through the request/response life cycle and show you how to use Symfony to generate code and shape it based on your needs.

Left arrow icon Right arrow icon

Key benefits

  • Create a robust and reliable Symfony development pipeline using Amazon's cloud platform
  • Cut development and maintenance costs by defining crystal clear features and possible scenarios for each feature before implementation
  • Follow detailed examples provided in each chapter to create a task management application

Description

In this book, you will learn some lesser known aspects of development with Symfony, and you will see how to use Symfony as a framework to create reliable and effective applications. You might have developed some impressive PHP libraries in other projects, but what is the point when your library is tied to one particular project? With Symfony, you can turn your code into a service and reuse it in other projects. This book starts with Symfony concepts such as bundles, routing, twig, doctrine, and more, taking you through the request/response life cycle. You will then proceed to set up development, test, and deployment environments in AWS. Then you will create reliable projects using Behat and Mink, and design business logic, cover authentication, and authorization steps in a security checking process. You will be walked through concepts such as DependencyInjection, service containers, and services, and go through steps to create customized commands for Symfony's console. Finally, the book covers performance optimization and the use of Varnish and Memcached in our project, and you are treated with the creation of database agnostic bundles and best practices.

Who is this book for?

If you are a PHP developer with some experience in Symfony and are looking to master the framework and use it to its full potential, then this book is for you. Though experience with PHP, object-oriented techniques, and Symfony basics is assumed, this book will give you a crash course on the basics and then proceed to more advanced topics.

What you will learn

  • Install and configure Symfony and required third-party bundles to develop a task management application
  • Set up a continuous integration server to orchestrate automatic builds every time you add a new feature to your project
  • Reduce maintenance costs dramatically using Behaviour Driven Development (BDD)
  • Create a slick user interface using the Bootstrap framework
  • Design robust business logic using Doctrine
  • Build a comprehensive dashboard and secure your project using the Sonata project
  • Improve performance using Redis, Memcache, and Varnish
  • Create customized Symfony commands and add them to your console

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Apr 26, 2016
Length: 290 pages
Edition : 1st
Language : English
ISBN-13 : 9781784394264
Languages :
Tools :

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Product Details

Publication date : Apr 26, 2016
Length: 290 pages
Edition : 1st
Language : English
ISBN-13 : 9781784394264
Languages :
Tools :

Packt Subscriptions

See our plans and pricing
Modal Close icon
$19.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
$199.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just $5 each
Feature tick icon Exclusive print discounts
$279.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just $5 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total $ 115.97
Extending Symfony2 Web Application Framework
$38.99
Mastering Symfony
$43.99
Symfony2 Essentials
$32.99
Total $ 115.97 Stars icon
Banner background image

Table of Contents

13 Chapters
1. Installing and Configuring Symfony Chevron down icon Chevron up icon
2. The Request and Response Life Cycle Chevron down icon Chevron up icon
3. Setting Up the Environment Chevron down icon Chevron up icon
4. Using Behavior-Driven Development in Symfony Chevron down icon Chevron up icon
5. Business Logic Chevron down icon Chevron up icon
6. Dashboard and Security Chevron down icon Chevron up icon
7. The Presentation Layer Chevron down icon Chevron up icon
8. Project Review Chevron down icon Chevron up icon
9. Services and Service Containers Chevron down icon Chevron up icon
10. Custom User Commands Chevron down icon Chevron up icon
11. More about Dev, Test and Prod Environments Chevron down icon Chevron up icon
12. Caching in Symfony Chevron down icon Chevron up icon
Index Chevron down icon Chevron up icon

Customer reviews

Rating distribution
Full star icon Full star icon Full star icon Half star icon Empty star icon 3.8
(5 Ratings)
5 star 60%
4 star 0%
3 star 0%
2 star 40%
1 star 0%
ian rust May 14, 2021
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Yes, this book works with a Linux system. There is a reason for the L in the LAMP stack - Linux Apache MySQL PHP. If you claim to be a PHP developer and don't know Linux it's like saying you're a web developer but you don't know javascript... you're a full stack developer but you've never heard of the MEAN stack or the LAMP stack. Rather than blaming the book for your lack of standard knowledge, go read about UNIX, become an actual real full stack developer, and come back. Standard practice is not to set up a server in a Windows environment, 99% of servers run UNIX.Also, for the record... You don't need MacOS AND Linux. Those are 2 separate operating systems. Mac OS X is built on top of UNIX, the idea in the book is you can use either Linux or Mac OS if you are more comfortable with that (really you can use any version of UNIX). You can install Linux Mint on your machine for 0.00$ and that works too.As far as the book - it's a good book, it has the information you need to get up and running with symfony.
Amazon Verified review Amazon
Rixie Trand Aug 16, 2021
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Bonjour, c'est un bon ouvrage pour maitriser le framework Symfony - notamment sur le systeme d'operation (OS) Microsoft Windows.
Amazon Verified review Amazon
scottdnz Jul 27, 2016
Full star icon Full star icon Full star icon Full star icon Full star icon 5
I found this book really helpful. It goes over a lot of topics that are covered in one place, for the first time, like the most useful Symfony bundles for setting up secure users and administering a website. I work in an agency which uses the Symfony framework frequently and the walkthroughs and tips in this book have already helped us in the last two months. If you're curious about making your PHP website better and using things like continuous integration, doctrine, caching, automated testing and Symfony services, then you'll reap plenty of benefits from this book.
Amazon Verified review Amazon
M. F. Edwards Jun 10, 2020
Full star icon Full star icon Empty star icon Empty star icon Empty star icon 2
I'm a full stack developer who has just got a new job where they want to use Symfony. I've not dealt with this before so I decided this book looked a good one to get me started. However, what the description fails to tell you is that whilst you can follow the tutorials in this book and build a system as you go, you need to have Apple OSX and Linux in order to do so!Why on earth the editor didn't pick this up before the book was published I don't know. Why write a book that only a small minority of people can easily use. Talk about aiming for the smallest possible market!I don't have the desire, the time nor the money to buy an Apple computer and then mess about installing Linux.It's a shame as the booked looked decent.I've sent it back.If you use Windows like I do, look elsewhere.
Amazon Verified review Amazon
Jorge Peralta Jul 21, 2017
Full star icon Full star icon Empty star icon Empty star icon Empty star icon 2
looks like a good book. Unfortunately, all its installation guides and execution examples are made for Unix based operating systems. As I am a windows user, doesn't work for me... I don't see anywhere up there warning you of that. regrettable.
Amazon Verified review Amazon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

How do I buy and download an eBook? Chevron down icon Chevron up icon

Where there is an eBook version of a title available, you can buy it from the book details for that title. Add either the standalone eBook or the eBook and print book bundle to your shopping cart. Your eBook will show in your cart as a product on its own. After completing checkout and payment in the normal way, you will receive your receipt on the screen containing a link to a personalised PDF download file. This link will remain active for 30 days. You can download backup copies of the file by logging in to your account at any time.

If you already have Adobe reader installed, then clicking on the link will download and open the PDF file directly. If you don't, then save the PDF file on your machine and download the Reader to view it.

Please Note: Packt eBooks are non-returnable and non-refundable.

Packt eBook and Licensing When you buy an eBook from Packt Publishing, completing your purchase means you accept the terms of our licence agreement. Please read the full text of the agreement. In it we have tried to balance the need for the ebook to be usable for you the reader with our needs to protect the rights of us as Publishers and of our authors. In summary, the agreement says:

  • You may make copies of your eBook for your own use onto any machine
  • You may not pass copies of the eBook on to anyone else
How can I make a purchase on your website? Chevron down icon Chevron up icon

If you want to purchase a video course, eBook or Bundle (Print+eBook) please follow below steps:

  1. Register on our website using your email address and the password.
  2. Search for the title by name or ISBN using the search option.
  3. Select the title you want to purchase.
  4. Choose the format you wish to purchase the title in; if you order the Print Book, you get a free eBook copy of the same title. 
  5. Proceed with the checkout process (payment to be made using Credit Card, Debit Cart, or PayPal)
Where can I access support around an eBook? Chevron down icon Chevron up icon
  • If you experience a problem with using or installing Adobe Reader, the contact Adobe directly.
  • To view the errata for the book, see www.packtpub.com/support and view the pages for the title you have.
  • To view your account details or to download a new copy of the book go to www.packtpub.com/account
  • To contact us directly if a problem is not resolved, use www.packtpub.com/contact-us
What eBook formats do Packt support? Chevron down icon Chevron up icon

Our eBooks are currently available in a variety of formats such as PDF and ePubs. In the future, this may well change with trends and development in technology, but please note that our PDFs are not Adobe eBook Reader format, which has greater restrictions on security.

You will need to use Adobe Reader v9 or later in order to read Packt's PDF eBooks.

What are the benefits of eBooks? Chevron down icon Chevron up icon
  • You can get the information you need immediately
  • You can easily take them with you on a laptop
  • You can download them an unlimited number of times
  • You can print them out
  • They are copy-paste enabled
  • They are searchable
  • There is no password protection
  • They are lower price than print
  • They save resources and space
What is an eBook? Chevron down icon Chevron up icon

Packt eBooks are a complete electronic version of the print edition, available in PDF and ePub formats. Every piece of content down to the page numbering is the same. Because we save the costs of printing and shipping the book to you, we are able to offer eBooks at a lower cost than print editions.

When you have purchased an eBook, simply login to your account and click on the link in Your Download Area. We recommend you saving the file to your hard drive before opening it.

For optimal viewing of our eBooks, we recommend you download and install the free Adobe Reader version 9.