This is kind of an outline of my Learn PHP The Right Way series on youtube. The series is split in three sections & all the videos are within the following playlist. Below is list of the videos with their appropriate section & lesson number.
The series is up to date with PHP version 8.1. I will try my best to keep this series up to date as the new PHP versions come out. Feel free to open a PR if you notice a typo or a mistake or let me know.
- Lesson 1.0 - Intro
- Lesson 1.1 - Installation & Webservers
- Lesson 1.2 - Syntax
- Lesson 1.3 - Constants & Variable Variables
- Lesson 1.4 - Data Types & Casting
- Lesson 1.5 - Boolean Data Type
- Lesson 1.6 - Integer Data Type
- Lesson 1.7 - Float Data Type
- Lesson 1.8 - String Data Type - Heredoc & Nowdoc Syntax
- Lesson 1.9 - Null Data Type
- Lesson 1.10 - Arrays
- Lesson 1.11 - Expressions
- Lesson 1.12 - Operators Part 1
- Lesson 1.13 - Operators Part 2
- Lesson 1.14 - Operator Precedence & Associativity
- Lesson 1.15 - Control Structures - If/Else
- Lesson 1.16 - Loops - Break & Continue
- Lesson 1.17 - Switch Statement
- Lesson 1.18 - Match Expression
- Lesson 1.19 - Return, Declare & Tickable Statements
- Lesson 1.20 - Include & Require
- Lesson 1.21 - Functions & Type Hinting
- Lesson 1.22 - Function Parameters - Named Arguments - Variadic Functions & Unpacking
- Lesson 1.23 - Variable Scopes & Static Variables
- Lesson 1.24 - Variable, Anonymous, Callable, Closure & Arrow Functions
- Lesson 1.25 - Work With Date, Time & Time Zones
- Lesson 1.26 - Work With Arrays - Array Functions
- Lesson 1.27 - PHP.INI - Configuration File
- Lesson 1.28 - Error Handling
- Lesson 1.29 - Apache Configuration & Virtual Hosts
- Lesson 1.30 - Work With File System
- Lesson 1.31 - Mini Exercise Project
- Lesson 1.32 - Mini Exercise Project Solution
- Lesson 2.0 - Intro to Object Oriented PHP
- Lesson 2.1 - Docker - Nginx - FPM
- Lesson 2.2 - Classes & Objects
- Lesson 2.3 - Constructor Property Promotion
- Lesson 2.4 - Namespaces
- Lesson 2.5 - Composer - PSR - Autoloading
- Lesson 2.6 - Class Constants
- Lesson 2.7 - Static Properties & Methods
- Lesson 2.8 - OOP Principles - Encapsulation & Abstraction
- Lesson 2.9 - Inheritance
- Lesson 2.10 - Abstract Classes & Methods
- Lesson 2.11 - Interfaces & Polymorphism
- Lesson 2.12 - Magic Methods
- Lesson 2.13 - Late Static Binding
- Lesson 2.14 - Traits
- Lesson 2.15 - Anonymous Classes
- Lesson 2.16 - Object Comparison - Variable Storage & Zend Value (zval) Container
- Lesson 2.17 - DocBlock
- Lesson 2.18 - Object Cloning
- Lesson 2.19 - Object Serialization
- Lesson 2.20 - Exceptions
- Lesson 2.21 - DateTime Object
- Lesson 2.22 - Iterable Data Type & Iterators
- Lesson 2.23 - Superglobals - Basic Routing Using $_SERVER Info
- Lesson 2.24 - Superglobals - $_GET/$_POST - Forms
- Lesson 2.25 - Superglobals - Sessions & Cookies - Output Buffering
- Lesson 2.26 - Superglobals - $_FILES - File Uploads
- Lesson 2.27 - Intro to MVC
- Lesson 2.28 - HTTP Headers
- Lesson 2.29 - Intro to MySQL
- Lesson 2.30 - PDO Part 1 - Prepared Statements - SQL Injection
- Lesson 2.31 - PDO Part 2 - Transactions - ENV Variables
- Lesson 2.32 - PDO Part 3 - Models & Refactoring
- Lesson 2.33 - Section 2 Review & Exercise Project
- Lesson 3.0 - Intro to Testing
- Lesson 3.1 - Unit Testing - PHPUnit Part 1
- Lesson 3.2 - Mocking - PHPUnit Part 2
- Lesson 3.3 - Dependency Injection & DI Containers
- Lesson 3.4 - DI Container With & Without Reflection API
- Lesson 3.5 - DI Container With Interface Support
- Lesson 3.6 - Generators
- Lesson 3.7 - WeakMap
- Lesson 3.8 - New In PHP 8.1
- Lesson 3.9 - Covariance & Contravariance
- Lesson 3.10 - Attributes - Simple Router With Attributes
- Lesson 3.11 - Enums
- Lesson 3.12 - Composition vs Inheritance
- Lesson 3.13 - Send Emails - Symfony Mailer
- Lesson 3.14 - Schedule Emails - CRON
- Lesson 3.15 - Intro to Doctrine - DataBase Abstraction Layer - DBAL
- Lesson 3.16 - Doctrine ORM - Entities & Data Mapper Pattern
- Lesson 3.17 - Doctrine ORM Query Builder & DQL
- Lesson 3.18 - Doctrine Migrations
- Lesson 3.19 - Active Record Pattern & Intro To Laravel Eloquent
- Lesson 3.20 - Refactor to use Eloquent instead of Doctrine DBAL
- Lesson 3.21 - PHP cURL API Tutorial & Emailable API Integration
- Lesson 3.22 - Refactor cURL to Guzzle With Retry Logic - Multiple API Integrations
- Lesson 3.23 - Data Transfer Objects - What Are DTOs
- Lesson 3.24 - Value Objects Practical Example
- Lesson 3.25 - Intro to Templating Engines - Blade & Twig
- Lesson 3.26 - How To Install Xdebug 3 with Docker & PhpStorm
- Lesson 3.27 - How To Deploy Vanilla PHP To Cloudways
- Lesson 3.28 - Intro to Slim PHP Framework
- Lesson 3.29 - Add DI Container & Doctrine ORM To Slim PHP Framework
- Lesson 3.30 - Little Refactoring Never Hurt Nobody
- Lesson 3.31 - Create & Run CLI Commands With Symfony Console
- Lesson 3.32 - 100th Video In This PHP Series - Project Overview
- Lesson P.0 - Expennies Project Setup - NPM & Webpack
- Lesson P.1 - Let's Do Some Data Modeling & Create Entities
- Lesson P.2 - User Registration & Password Hashing
- Lesson P.3 - Add Form Validation
- Lesson P.4 - Flash Errors & Old Form Data To Session
- Lesson P.5 - Session Based Authentication - Session Hijacking & Fixation
- Lesson P.6 - Persist Authenticated User Object Throughout The Request
- Lesson P.7 - Refactor Sessions & Create Session Interface
- Lesson P.8 - Sessions & Referrer URL Refactor
- Lesson P.9 - Request Validation - Factory Design Pattern
- Lesson P.10 - CSRF Explained - What Is Cross Site Request Forgery
- Lesson P.11 - XSS Explained - What Is Cross Site Scripting
- Lesson P.12 - Let's Build CRUD Actions For Categories
- Lesson P.13 - First Ajax Request
- Lesson P.14 - POST Ajax Request & CSRF Fields
- Lesson P.15 - Ajax Request Validation
- Lesson P.16 - Display Errors Using JavaScript & Bootstrap
- Lesson P.17 - DataTables & Pagination
- Lesson P.18 - How To Securely Implement Sorting & Filtering
- Lesson P.19 - Transactions CRUD Exercise Overview
- Lesson P.20 - Upload Transaction Receipts With Proper File Validation
- Lesson P.21 - Open Transaction Receipt Files
- Lesson P.22 - Import Transactions Exercise Solution Overview
- Lesson P.23 - Profiling for N+1 Queries
- Lesson P.24 - Reduce Memory Consumption & Speed Up Imports
- Lesson P.25 - Toggle Transaction Review Status - Minor Refactoring
- Lesson P.26 - Decorating Entity Manager to Avoid Inheritance
- Lesson P.27 - Implement Route Model Binding With Slim
- Lesson P.28 - Implement Authorization Using Doctrine Filters
- Lesson P.29 - Set Up Email Verification For New Users
- Lesson P.30 - Secure User Verification Using Signed URLs
- Lesson P.31 - Send Two-Factor Auth Code Via Email
- Lesson P.32 - Implement Two-Factor Authentication Via Email
- Lesson P.33 - Implement Forgot Password Functionality
- Lesson P.34 - Implementing Caching with Redis
- Lesson P.35 - Implementing Rate Limiting
- Lesson P.36 - Uploading Files to S3 Bucket
- Lesson P.37 - Final Exercise - Building Back-End For Dashboard
- Lesson P.38 - Deploy Expennies To Production Using Laravel Forge