Course Introduction
  • Introduction
  • Course outline and how to make most of this course! (PLEASE WATCH!)
  • Tools (required/optional) overview
Getting Started
  • Installing PHP and Composer on Windows
  • Install PHP & Composer on MacOS commands
  • Installing PHP and Composer on Mac
Modern PHP 7 Introduction (OPTIONAL)
  • Installing Visual Studio Code
  • Namespaces
  • Class Fields and Methods
  • Method & Field Visibility
  • Inheritance
  • Abstract Classes
  • Interfaces
  • Typed Arguments & Function Return Types
  • Anonymous Functions (Closures)
  • Reflection API (Reverse-Engineer Classes, Methods, Functions)
  • Dependency Injection (In Practice)
  • Simple Service Container (Hands-On Coding!)
  • Service Autowiring Implementation Part 1
  • Service Autowiring Implementation Part 2
  • Annotations and Kernel Part 1
  • Annotations and Kernel Part 2
Symfony Introduction - Controllers & Routing
  • Creating new Symfony project
  • Routing annotations in controllers
  • Routing - route parameter wildcards
  • Routing - default parameter values
  • Routing - generating urls using route names
  • AbstractController, Request, Response
Symfony Introduction - Databases, Doctrine, Fixtures
  • Installing ORM, maker, configuring database
  • Generating first Entity
  • Entity explained
  • Migration - modifying database structure
  • Persisting entities and serializing data
  • Fetching objects using repositories
  • ParamConverter - type hinting actions for automatic fetching of entities
  • Deleting entities
  • Doctrine Fixtures - seeding fake data
  • Admin panel introduction - EasyAdmin
API Platform - Introduction
  • Install API Platform and create the first resource
  • Generate User and Comment entity
  • ManyToOne relation and migration
  • Fixtures with references (for relations)
  • Password encoding in fixtures
  • Generate fake data in fixtures using Faker
  • BlogPost with Comment relation and fixtures
API Platform - Operations (GET/POST/PUT/DELETE)
  • Built-in API Platform operations
  • Disabling operations
  • Introduction to serialization/deserialization
  • Serialization groups (controlling which properties are serialized)
  • EventSubscriber (hashing password)
  • Validator and validation constraints
  • Validation using regular expressions
  • Virtual property (not persisted to database)
  • Validating uniqueness of fields (username, email)
API Platform - User Authentication and JWT tokens
  • JWT Tokens introduction
  • Preparing JWT token library and keys
  • Configuring UserProvider
  • Firewall configuration
  • JSON login configuration and Guard Authentication explained
  • Authentication final configuration and first login using JWT token
API Platform - Authorization, Data Validation, Serialization
  • Using is_granted() to control access to operations
  • BlogPost validation on POST
  • Setting author of BlogPost automatically (EventSubscriber)
  • Making sure only owner of BlogPost can modify it (PUT)
  • Controlling which properties can be changed (no username change)
  • Hasing password on User changes (PUT) - with Events
  • Comment resource operations (POST/PUT)
API Platform - Subresources, relations, serialization depth
  • More randomness in fixtures
  • Setting author automatically (EventSubscriber) - using generic Interface
  • Setting published date automatically (EventSubscriber)
  • API subresources
  • Controlling how deep relations are serialized
  • Embedding Author resource inside BlogPost
API Platform - Custom Serialization, User Roles
  • Adding user role field with migration
  • User role fixtures
  • Defining role hierarchy
  • Verifying only users with specific role can POST resources
  • Different User view for admins (different serialization of all User entities)
  • Verifying only admin can see all User's email
  • User can view his full profile (including email and roles) - custom Normalizer
  • Verifying only the profile owner can see all properties
API Platform - Custom Operations (Password Reset)
  • Disabling password hashing for PUT operation
  • Configuring custom operation for password reset in User
  • Creating custom Action class
  • Implementing custom PasswordReset action
  • Invalidating JWT tokens after password reset
API Platform - Custom Resource, E-mail Sending (User Account Confirmation)
  • User enabled property migration and fixtures