Course Outline
Object Oriented Programming
- Classes and objects
- Properties and methods
- Constructor and destructor methods
- Class inheritance
- Attributes and methods scopes (visibility)
- Error handling with exceptions
- Namespaces
Introducing the Symfony famework
- Introducing the Symfony framework and its ecosystem
- Installing the Symfony « Standard Edition Distribution »
- Discovering the Symfony project architecture (application, bundles, libraries, bundles etc.)
- Understanding the HTTP request processing workflow
- Understanding the concept of environment (development, production and testing)
- Introducing the coding and files naming conventions
- Discovering the concept of a « Bundle »
Debugging the Code
- Getting help from the « Web Debug Toolbar »
- Introspecting the recorded logs
- Profiling HTTP requests thanks to the « Web Profiler » application
- Spotting problems thanks to explicit errors and exceptions stack traces
- Using the Debug and VarDumper components features
Configuring the application
- Comparing the supported built-in configuration format: XML, YAML and PHP
- Configuring the application thanks to global parameters
- Configuration application’s routes and URLs with annotations
- Overriding the configuration defined by a built-in or third-party « bundle »
Generating Contents for the End User
- Introducing the Twig templates engine
- Comparing Twig and raw PHP templating strategies
- Accessing global variables from Twig templates (request, session, user)
- Using tags, filters and function to generate and format contents in a Twig template
- Making templates truly extensible thanks to the template inheritance feature
- Splitting templates into smaller templates chunks to avoid code duplications
- Rendering a Symfony controller from within a Twig template
- Generating URLs based on the application’s routes configuration
- Rendering Symfony forms with custom Twig view helpers
Developping Controller and Analyzing the Request
- Designing a controller class with its action methods
- Mapping URL patterns to Symfony controllers thanks to annotations
- Generating raw responses and Twig templates based responses
- Accessing client’s information from the Request object
- Reading and writing session data
- Reading and writing cookies data
- Triggering a 404 error page when the resource is not found
- Triggering an internal redirect to another controller to avoid code duplications
- Redirecting the user to another page
Interacting with the End User thanks to Forms
- Discovering the « Form » component
- Designing and processing simple web forms
- Adding validation constraints on submitted form fields’ data
- Prototyping the form rendering thanks to Twig view helpers
- Gathering the form submitted data and processing them
- Sending the form validated and filtered data by e-mail to some recipient
Internationalizing and Localizing the User Interface
- Discovering the « Translation » component
- Changing the default user’s locale
- Defining custom abstract translation keys in Twig templates
- Dealing with dynamic translations including pluralized sentences
Dependency Injection and Service Container
- Understanding the dependency injection principle
- Getting started with the Symfony service container
- Listing all built-in Symfony services thanks to the command line tools
- Registering new custom business services in the dependency injection container
- Accessing a registered service from the service container
- Creating and accessing global configuration parameters from the container
Contracting a Quality Insurance with Automated Tests
- Discovering the PHPUnit tests automation framework
- Understanding the goals of automating tests (unit and functional tests)
- Configuring an automated tests suite
- Designing and executing a unit tests suite
- Designing and executing a functional tests suite
- Generating code coverage reports
Interacting with the End User and Forms
- Designing and processing web forms
- Automating form rendering with Twig view helpers
- Customizing form rendering with built-in and custom Twig form themes
- Configuring form field types as services
- Applying built-in validation constraint rules on submitted data
- Applying custom validation constraint rules on submitted data
- Contextualizing the data validation thanks to validation groups
Restricting Access to Secured Areas of the Application
- Getting started with authentication and authorization principles
- Securing some application’s pages thanks to a form based authentication strategy
- Implementing the Security Guard sub component to handle authentication
- Setting up an access control policy based on user’s roles
- Testing user’s permissions from a controller and a Twig template
- Registering custom authorization rules thanks to the security « voters »
Improving Application Performances with HTTP Caching and ESI
- Getting started with the HTTP caching workflows
- Discovering the different kind of cache systems
- Comparing the expiration and validation cache strategies
- Applying expiration and validation cache constraints to generated web pages
- Caching page fragments thanks to the ESI technology (« Edge Side Includes »)
- Installing and configuring the Symfony’s built-in reverse-proxy cache
Querying a Relational Database System with Doctrine
- Discovering the basics of the Doctrine ORM
- Understanding the concepts of « entities » and « repositories »
- Automating PHP classes and SQL queries code generation with Doctrine
- Persisting data to the database thanks to the Doctrine ORM entity manager
- Fetching data back from the database thanks to Doctrine
- Building and executing custom SQL queries thanks to the Doctrine Query Builder object
Requirements
- Knowledge of Object Oriented Programming concept
- Knowledge of PHP
- Basic knowledge of any MVC/MVP framework
Testimonials (3)
Abhinav did an excellent job! Within four days he covered all the important concepts that are used in REAL software development. I am so thankful have him as our trainer!.
Vijay Joseph
Course - Web Development with Symfony3
I liked the trainer's communication & knowledge in Symphony 3 and associated technologies. He had taken enough effort to teach and demonstrate with some examples in the respective topics. I can say my symphony knowledge and confidence level is gone up after this training.
Hari Kumar
Course - Web Development with Symfony3
I like the Doctrine concept in Symphony taken by the trainer. The trainer is more energetic and make the sessions more interactive. I think it is a great capability of the trainer.