Symfony Certification
Are you a professional web developer? Do you master Symfony? Do you want your expertise or your team to gain recognition? Then, there's just one thing to do next: the Symfony Certification!
Take the exam online from the comfort of your own home or work office and join the exclusive community of certified Symfony developers.
Check out the Frequently Asked Questions about this exam.
- 75 questions
- 15 topics
- 90 minutes
- In English
Exam Topics
NOTE: The Symfony 8 Certification exam only includes questions about Symfony 8.0 and not about Symfony 8.1, 8.2, 8.3 and 8.4 versions.
-
PHP
- PHP API up to PHP 8.4 version
- Object Oriented Programming
- Attributes
- Interfaces
- Anonymous functions and closures
- Abstract classes
- Exception and error handling
- Traits
- Enums
-
HTTP
- HTTP Specification (RFC 9110)
- Status codes
- HTTP request
- HTTP response
- HTTP methods
- Cookies
- Caching
- Content negotiation
- Language detection
- Symfony HttpClient component
-
Symfony Architecture
- HttpFoundation component
- Symfony Flex
- License
- Components and Bridges
- Code organization
- Request handling
- Exception handling
- Event dispatcher and kernel events
- Official best practices
- Backward compatibility promise
- Deprecations best practices
- Framework overloading
- Release management and roadmap schedule
- Framework interoperability and PSRs
- Naming conventions
-
Controllers
- HttpKernel component and FrameworkBundle
- Naming conventions
- The base AbstractController class
- The request
- The response
- The cookies
- The session
- The flash messages
- HTTP redirects
- Internal redirects
- Generate 404 pages
- File upload
- Built-in internal controllers
- Argument value resolvers
-
Routing
- Routing component and FrameworkBundle
- Configuration (YAML and PHP attributes)
- Restrict URL parameters
- Set default values to URL parameters
- URLs generation
- Trigger redirects
- Special internal routing attributes
- Domain name matching
- Conditional request matching
- HTTP methods matching
- User's locale guessing
- Router debugging
-
Templating with Twig
- TwigBundle
- Twig syntax up to 3.22 version
- Auto escaping
- Template inheritance
- Global variables
- Filters and functions
- Template includes
- Loops and conditions
- URLs generation
- Controller rendering
- Translations and pluralization
- String interpolation
- Assets management
- Debugging variables
-
Forms
- Form component
- Forms creation
- Forms handling
- Form types (built-in and custom)
- Forms rendering with Twig
- Forms theming
- CSRF protection
- Handling file upload
- Built-in form types
- Data transformers
- Form events
- Form type extensions
- Form options (OptionsResolver component)
-
Data Validation
- Validator component
- PHP object validation
- Built-in validation constraints
- Validation scopes
- Validation groups
- Group sequence
- Custom callback validators
- Violations builder
-
Dependency Injection
- Dependency Injection component
- Service container
- Built-in services
- Configuration parameters
- Services registration (YAML and PHP attributes)
- Service decoration
- Tags
- Semantic configuration
- Factories
- Compiler passes
- Services autowiring
- Service locators
-
Security
- Security Core, CSRF and PasswordHasher components
- Authentication
- Authorization
- Configuration
- Providers
- Firewalls
- Users
- Password hashers
- Roles
- Access Control Rules
- Authenticators, Passports and Badges
- Voters and voting strategies
-
Messenger
- Messenger component
- Transports
- Messages and handlers
- Workers
- Retries and failures
- Middleware
- Events
- Note: third-party transports (Doctrine, Redis, Amazon SQS, etc.) and their usage/configuration is not included
-
Console
- Console component
- Built-in commands
- Custom commands
- Configuration
- Options and arguments (using PHP attributes)
- Input and Output objects
- Built-in helpers
- Console events
- Verbosity levels
-
Automated Tests
- Unit tests with PHPUnit
- Functional tests with PHPUnit
- Client object
- Crawler object (CssSelector and DomCrawler components)
- Profiler object (WebProfiler bundle)
- Framework objects access
- Client configuration
- Request and response objects introspection
- Handling legacy deprecated code
- Note: PHPUnit Bridge is not included
-
Miscellaneous
- Configuration (including DotEnv and ExpressionLanguage components)
- Error handling
- Code debugging
- Deployment best practices
- Web Profiler, Web Debug Toolbar and Data collectors
- Internationalization and localization (Note: Intl component utilities to access ICU data are not included)
- HTTP Caching (reverse proxies, expiration, validation) Note: ESI (Edge Side Includes) is not included
- Components:
- Cache
- Clock
- EventDispatcher
- Filesystem
- Finder
- Event
- Mailer
- Mime
- Process
- PropertyAccess
- Runtime
- Serializer
The following is a list of the topics not included in the exam:
- Symfony UX
- Symfony AI
- Doctrine and database-related topics
- Monolog
- Third-party bundles and projects
- AssetMapper and Webpack Encore
- PHP Polyfills
- Any Symfony component not explicitly mentioned in the above list (e.g. String, Uid, TypeInfo, Lock, etc.)
- Any bridge to third-party services in any component (Mailer, Messenger, Translation, etc.)
NOTE: The Symfony 7 Certification exam only includes questions about Symfony 7.0 and not about Symfony 7.1, 7.2, 7.3 and 7.4 versions.
-
PHP
- PHP API up to PHP 8.2 version
- Object Oriented Programming
- Namespaces
- Interfaces
- Anonymous functions and closures
- Abstract classes
- Exception and error handling
- Traits
- PHP extensions
- SPL
-
HTTP
- Client / Server interaction
- Status codes
- HTTP request
- HTTP response
- HTTP methods
- Cookies
- Caching
- Content negotiation
- Language detection
- Symfony HttpClient component
-
Symfony Architecture
- Symfony Flex
- License
- Components
- Bridges
- Code organization
- Request handling
- Exception handling
- Event dispatcher and kernel events
- Official best practices
- Release management
- Backward compatibility promise
- Deprecations best practices
- Framework overloading
- Release management and roadmap schedule
- Framework interoperability and PSRs
- Naming conventions
-
Controllers
- Naming conventions
- The base AbstractController class
- The request
- The response
- The cookies
- The session
- The flash messages
- HTTP redirects
- Internal redirects
- Generate 404 pages
- File upload
- Built-in internal controllers
- Argument value resolvers
-
Routing
- Configuration (only YAML and PHP attributes)
- Restrict URL parameters
- Set default values to URL parameters
- Generate URL parameters
- Trigger redirects
- Special internal routing attributes
- Domain name matching
- Conditional request matching
- HTTP methods matching
- User's locale guessing
- Router debugging
-
Templating with Twig
- Twig syntax up to 3.8 version
- Auto escaping
- Template inheritance
- Global variables
- Filters and functions
- Template includes
- Loops and conditions
- URLs generation
- Controller rendering
- Translations and pluralization
- String interpolation
- Assets management
- Debugging variables
-
Forms
- Forms creation
- Forms handling
- Form types (built-in and custom)
- Forms rendering with Twig
- Forms theming
- CSRF protection
- Handling file upload
- Built-in form types
- Data transformers
- Form events
- Form type extensions
-
Data Validation
- PHP object validation
- Built-in validation constraints
- Validation scopes
- Validation groups
- Group sequence
- Custom callback validators
- Violations builder
-
Dependency Injection
- Service container
- Built-in services
- Configuration parameters
- Services registration (only with YAML and PHP attributes)
- Service decoration
- Tags
- Semantic configuration
- Factories
- Compiler passes
- Services autowiring
- Service locators
-
Security
- Authentication
- Authorization
- Configuration
- Providers
- Firewalls
- Users
- Password hashers
- Roles
- Access Control Rules
- Authenticators, Passports and Badges
- Voters and voting strategies
-
HTTP Caching
- Cache types (browser, proxies and reverse-proxies)
- Expiration (Expires, Cache-Control)
- Validation (ETag, Last-Modified)
- Client side caching
- Server side caching
- Edge Side Includes
-
Console
- Built-in commands
- Custom commands
- Configuration
- Options and arguments
- Input and Output objects
- Built-in helpers
- Console events
- Verbosity levels
-
Automated Tests
- Unit tests with PHPUnit
- Functional tests with PHPUnit
- Client object
- Crawler object
- Profiler object
- Framework objects access
- Client configuration
- Request and response objects introspection
- PHPUnit bridge
- Handling legacy deprecated code
-
Miscellaneous
- Configuration (including DotEnv and ExpressionLanguage components)
- Error handling
- Code debugging
- Deployment best practices
- Cache, Process and Serializer components
- Messenger component
- Mime and Mailer components
- Filesystem and Finder components
- Lock component
- Web Profiler, Web Debug Toolbar and Data collectors
- Internationalization and localization (and Intl component)
- Runtime component
- Clock component
NOTE: The Symfony 6 Certification exam only includes questions about Symfony 6.0 and not about Symfony 6.1, 6.2, 6.3 and 6.4 versions.
-
PHP
- PHP API up to PHP 8.1 version
- Object Oriented Programming
- Namespaces
- Interfaces
- Anonymous functions and closures
- Abstract classes
- Exception and error handling
- Traits
- PHP extensions
- SPL
-
HTTP
- Client / Server interaction
- Status codes
- HTTP request
- HTTP response
- HTTP methods
- Cookies
- Caching
- Content negotiation
- Language detection
- Symfony HttpClient component
-
Symfony Architecture
- Symfony Flex
- License
- Components
- Bridges
- Code organization
- Request handling
- Exception handling
- Event dispatcher and kernel events
- Official best practices
- Release management
- Backward compatibility promise
- Deprecations best practices
- Framework overloading
- Release management and roadmap schedule
- Framework interoperability and PSRs
- Naming conventions
-
Controllers
- Naming conventions
- The base AbstractController class
- The request
- The response
- The cookies
- The session
- The flash messages
- HTTP redirects
- Internal redirects
- Generate 404 pages
- File upload
- Built-in internal controllers
-
Routing
- Configuration (YAML, XML, PHP & attributes/annotations)
- Restrict URL parameters
- Set default values to URL parameters
- Generate URL parameters
- Trigger redirects
- Special internal routing attributes
- Domain name matching
- Conditional request matching
- HTTP methods matching
- User's locale guessing
- Router debugging
-
Templating with Twig
- Twig syntax up to 3.3 version
- Auto escaping
- Template inheritance
- Global variables
- Filters and functions
- Template includes
- Loops and conditions
- URLs generation
- Controller rendering
- Translations and pluralization
- String interpolation
- Assets management
- Debugging variables
-
Forms
- Forms creation
- Forms handling
- Form types
- Forms rendering with Twig
- Forms theming
- CSRF protection
- Handling file upload
- Built-in form types
- Data transformers
- Form events
- Form type extensions
-
Data Validation
- PHP object validation
- Built-in validation constraints
- Validation scopes
- Validation groups
- Group sequence
- Custom callback validators
- Violations builder
-
Dependency Injection
- Service container
- Built-in services
- Configuration parameters
- Services registration
- Service decoration
- Tags
- Semantic configuration
- Factories
- Compiler passes
- Services autowiring
-
Security
- Authentication
- Authorization
- Configuration
- Providers
- Firewalls
- Users
- Password hashers
- Roles
- Access Control Rules
- Authenticators
- Voters and voting strategies
-
HTTP Caching
- Cache types (browser, proxies and reverse-proxies)
- Expiration (Expires, Cache-Control)
- Validation (ETag, Last-Modified)
- Client side caching
- Server side caching
- Edge Side Includes
-
Console
- Built-in commands
- Custom commands
- Configuration
- Options and arguments
- Input and Output objects
- Built-in helpers
- Console events
- Verbosity levels
-
Automated Tests
- Unit tests with PHPUnit
- Functional tests with PHPUnit
- Client object
- Crawler object
- Profiler object
- Framework objects access
- Client configuration
- Request and response objects introspection
- PHPUnit bridge
- Handling legacy deprecated code
-
Miscellaneous
- Configuration (including DotEnv and ExpressionLanguage components)
- Error handling
- Code debugging
- Deployment best practices
- Cache, Process and Serializer components
- Messenger component
- Mime and Mailer components
- Filesystem and Finder components
- Lock component
- Web Profiler, Web Debug Toolbar and Data collectors
- Internationalization and localization (and Intl component)
- Runtime component