How does it all work?
75 questions
16 topics
90 minutes
Entirely in English
Certified
Expert Developer
(2.3 or 3.0)
Certified
Advanced Developer
(2.3 or 3.0)
Re-apply to take the exam
(up to twice a year)
4,000 test centers worldwide, take the exam wherever and whenever you want!
The 16 exam topics are:
-
PHP and Web Security
- Object Oriented Programming
- Namespaces
- Interfaces
- Anonymous functions and closures
- Abstract classes
- Exception and error handling
- Traits
- PHP extensions
- SPL
- Web security (XSS, CSRF, etc.)
-
HTTP
- Client / Server interaction
- Status codes
- HTTP request
- HTTP response
- HTTP methods
- Cookies
- Caching
- Content negotiation
- Language detection
-
Symfony Architecture
- Symfony Standard Edition
- License
- Components
- Bundles
- Bridges
- Configuration
- Code organization
- Request handling
- Exception handling
- Event dispatcher and kernel events
- Official best practices
- Release management
- Backward compatibility promise
- Deprecations best practices
-
Standardization
- Release management and roadmap schedule
- Framework interoperability and PSRs
- Naming conventions
- Coding standards
- Third-party libraries integration
- Composer packages handling
- Development best practices
- Framework overloading
- Semantic versioning
-
Bundles
- Naming conventions
- Code organization
- Controllers
- The views
- The resources
- Overriding default error pages
- Bundle inheritance
- Event dispatcher and kernel events
- Semantic configuration and compiler passes
-
Controllers
- Naming conventions
- The base Controller 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 & 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
- 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
- Tags
- Semantic configuration
- Factories
- Compiler passes
- Services autowiring
-
Security
- Authentication
- Authorization
- Configuration
- Providers
- Firewalls
- Users
- Passwords encoders
- Roles
- Access Control Rules
- Guard 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
- Profile object
- Framework objects access
- Client configuration
- Request and response objects introspection
- PHPUnit bridge
- Handling legacy deprecated code
-
Miscellaneous
- Error handling
- Code debugging
- Deployment best practices
- Process
- Data collectors
- Web Profiler and Web Debug Toolbar
- Internationalization and localization