logo资料库

Mastering Symfony.pdf

第1页 / 共290页
第2页 / 共290页
第3页 / 共290页
第4页 / 共290页
第5页 / 共290页
第6页 / 共290页
第7页 / 共290页
第8页 / 共290页
资料共290页,剩余部分请下载后查看
Cover
Copyright
Credits
About the Author
About the Reviewers
www.PacktPub.com
Table of Contents
Preface
Chapter 1: Installing and Configuring Symfony
Why Symfony?
Influenced by Symfony
How bright is the future?
Installation
Composer and Packagist
Installing Symfony via Composer
The road map
Checking the installation
Summary
Chapter 2: The Request and Response Life Cycle
The big picture
Anatomy of a bundle
Generating a new bundle
Best practices
Custom bundles versus AppBundle
Creating templates with TWIG
Controller/View interaction
Conditional templates
Make it dynamic
Database configurations
Generating an entity
Installing bundles created by others
Creating data fixtures
Loading data fixtures
Dynamic templates and controllers
The big picture with MVC
Summary
Chapter 3: Setting Up the Environment
The importance of Continuous Integration
Amazon Web Services
Elastic Compute Cloud
Creating a new instance
Setting up the server
Installing Apache
Installing MySQL and PHP
Installing Jenkins
Setting up security and installing plugins in Jenkins
Simple Email Service
Configuring Jenkins
Installing PHP tools
Sniff Symfony codes
Orchestrating the build process
Creating a new job in Jenkins
Running the first build
How does GitHub alert Jenkins about new pushes?
Do I need CI?
Summary
Chapter 4: Using Behavior-Driven Development in Symfony
Getting started with BDD
Is BDD a replacement for TDD?
What is Behat?
Installing and configuring Behat
The features we need for this project
More information about the project
Gherkin – the common language
Writing a scenario for the about page
Seeing it in action
Headless versus zombie
Using the Selenium2 controller for automated tests
The about page does not follow BDD
A scenario to show the user's details
Implementing the user's details scenario
Testing the scenario
More about the acceptance test flow in Mink
Defining and prioritizing features
Codeception – the BDD style testing framework
Installing the Codeception framework
Bootstrapping Codeception
Test suits
The testers
Adding sample tests
Running the tests
Summary
Chapter 5: Business Logic
Choosing between creating a Model or entity
So where does the business logic live?
Reviewing the facts and building entity relationships
Creating ERDs using MySQL Workbench
Adding a new entity
Adding a new relationship
Creating actual tables from a diagram
Generating entities
Data fixtures
Some business logic features and scenarios
TDD and BDD with Codeception
Step one – creating a functional test
Developing the missing code
Step two – creating the unit tests
Setting up the database for a test environment in the right way
Dropping and recreating the database for each test
Creating unit tests
Writing the code to pass the test
Running functional and unit tests
Step three – creating an acceptance test
On the CI side of the story
Summary
Chapter 6: Dashboard and Security
How security is organized in Symfony?
Authentication
Authorization
Handling users with FOSUserBundle
Security settings
Adding the required configurations to FOSUserBundle
Adding routes
Updating the tables
A simple road test
Generating automated data-fixtures
Introducing AliceBundle
Creating data-fixtures with Alice
Relationship with Alice
Setting up the login redirection
Creating tests for the new controller
Creating the Dashboard Controller
Securing the dashboard
The Sonata project
Installing and configuring Sonata bundle
Adding contents to the dashboard
Creating admin feature for entities with relations
Integrating FOSUserBundle into the admin area
Installing SonataUserBundle
SonatUserBundle configuration
Updating the routes
Setting the security
Checking the installation
Putting SonataUserBundle in charge
User dashboard
Generating CRUD
Modifying the forms
Summary
Chapter 7: The Presentation Layer
How assets are organized
Asset management
How templates are organized
Let's mold the clay
To navigate or not to navigate
What is Bootstrap?
MopaBootstrapBundle
Bootstrap configuration
Creating your first menu
Rendering the menu in a template
The Dashboard template
Overriding templates
Profile-related templates
Changing the backend logo
Summary
Chapter 8: Project Review
The dashboard's contents
Visual blocks that provide statistics about tasks
A feature file for the finished tasks block
Implementing the finished tasks block
Implementing the dashboard controller
Uploading files with SonataMediaBundle
Adding an attachment feature to the Task entity
Team and team members
The Team entity
Adding a notification system
Adding time tracking properties
The notification business logic
Events, event dispatchers, and event listeners
The Notifier event listener
Summary
Chapter 9: Services and Service Containers
How to create a service
How are services beneficial to our projects?
How to call a service
How to configure a service
Why is it called a Dependency Injection Container?
Why didn't we import services inside the bundle?
How to create and load services via autowiring
Organizing services with tags
Summary
Chapter 10: Custom User Commands
Creating and registering commands
Creating commands for tasks
The configuration part
The execution part
Adding interactivity to commands
Console helpers
Summary
Chapter 11: More about Dev, Test and Prod Environments
Why do we need different environments?
The environment configuration file
Processing configuration files
Creating a new environment
The config file
The front controller
Summary
Chapter 12: Caching in Symfony
Definition of a cache
Characteristics of a good cache
Caches in a Symfony project
Key players in the HTTP cache header
Using the Symfony reverse proxy cache
Set expiration for dashboard page
Validation strategy
How to mix expiration and validation strategies
Doctrine cache
Putting it all together
ESI for selective caching
Sophisticated bundles
Summary
Index
Mastering Symfony Orchestrate the designing, development, testing, and deployment of web applications with Symfony Sohail Salehi BIRMINGHAM - MUMBAI
Mastering Symfony Copyright © 2016 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: April 2016 Production reference: 1210416 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-78439-031-0 www.packtpub.com [ FM-2 ]
Credits Author Sohail Salehi Project Coordinator Nidhi Joshi Proofreader Safis Editing Indexer Mariammal Chettiyar Production Coordinator Nilesh Mohite Cover Work Nilesh Mohite Reviewers Mickaël Andrieu Vincent COMPOSIEUX Tito Miguel Costa Commissioning Editor Usha Iyer Acquisition Editors Tushar Gupta Richard Harvey Content Development Editor Aishwarya Pandere Technical Editors Pranil Pathare Danish Shaikh Copy Editor Tasneem Fatehi [ FM-3 ]
About the Author Sohail Salehi is a full stack web developer who is constantly seeking creative solutions for complex problems. He believes that what has been taught as universalities should be considered as a basic stepping stone to real-life challenges. They cannot be used as practical solutions. He learned that a one-size-fits-all solution does not work in the IT world. Every business, every coding challenge, and every environment setup has its own signature and requires some tweaking on basic principals to make sure that it receives a reliable cost-effective solution. When he is not staring at his computer screen, he is watching sunsets and sunrises, swimming and surfing in the ocean, and putting his subconscious mind at work by asking creative questions while facing life's ups and downs on a daily basis. I would like to thank the Packt Publishing team for being supportive at all times and also being patient with me at the times I've gone wild and updated the book contents over and over again. [ FM-4 ]
About the Reviewers Mickaël Andrieu is a passionate open source engineer, contributor, and maintainer of projects such as Symfony, CasperJS, and Certificationy. He is currently a core developer and technical evangelist of the open source e-commerce solution, PrestaShop, built around the Symfony framework in its latest version. An ex-developer at SensioLabs, he has accumulated good expertise in PHP and the Symfony framework. When he is not working on his own project, he teaches best development practices to engineering students or advices big companies on their open source strategies. He has worked at SensioLabs and Lp digital system. He will probably be working on another book, as Llewellyn F. Rozario just contacted him for another review. [ FM-5 ]
Vincent COMPOSIEUX is a French web engineer who loves technologies such as PHP, Python, NodeJS, and Go. He is based in Paris and working at Ekino, a French web agency that focuses on quality. Previously, he has worked for e-commerce companies and web agencies on multiple web projects with high traffic. He loves web technologies and frameworks and has experience using the Zend framework, Magento, and Symfony. He has great experience of Symfony because he has been using it since the very first version and is actively involved in the Symfony community. Indeed, he has developed some bundles such as FeedBundle to manage RSS and Atom feeds, GoogleTranslateBundle to use the Google Translate API to translate content, and some others. He is also a contributor to the Sonata bundles suite. You can contact him and see more on his personal website, http://vincent. composieux.fr. Tito Miguel Costa is a full stack web application developer with over 10 years of experience in PHP. He started using Symfony back in 2007, when version 1.0 was released and it remains his favorite framework until now. Back in Portugal, where he is originally from, he organized several courses and oriented a dissertation on how to optimize and scale projects built with Symfony. Currently, he maintains several open source bundles and works as a senior Symfony developer at Lendable, one of the most promising start-ups in London. [ FM-6 ]
www.PacktPub.com eBooks, discount offers, and more Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub. com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at customercare@packtpub.com for more details. At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks. TM https://www2.packtpub.com/books/subscription/packtlib Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access, and read Packt's entire library of books. Why subscribe? • Fully searchable across every book published by Packt • Copy and paste, print, and bookmark content • On demand and accessible via a web browser [ FM-7 ]
分享到:
收藏