An open API service indexing awesome lists of open source software.

https://github.com/devmuhammadzaki/learn-php-the-right-way

This is me following the Learn PHP The Right Way series on youtube.
https://github.com/devmuhammadzaki/learn-php-the-right-way

php

Last synced: 12 months ago
JSON representation

This is me following the Learn PHP The Right Way series on youtube.

Awesome Lists containing this project

README

          

# Learn PHP The Right Way

This is me following the Learn PHP The Right Way series on youtube. The series is split in three sections & all the videos are within the following [playlist](https://youtube.com/playlist?list=PLr3d3QYzkw2xabQRUpcZ_IBk9W50M9pe-).

# Section 1 - Basic PHP

- [ 1.1 - Syntax](./section1/01-basic-syntax.php)
- [ 1.2 - Constants & Variable Variables](./section1/02-variables-and-constants.php)
- [ 1.3 - Data Types & Casting](./section1/03-data-types.php)
- [ 1.4 - Boolean Data Type](./section1/04-boolean-data-type.php)
- [ 1.5 - Integer Data Type](./section1/05-integer-data-type.php)
- [ 1.6 - Float Data Type](./section1/06-float-data-type.php)
- [ 1.7 - String Data Type - Heredoc & Nowdoc Syntax](./section1/07-string-data-type.php)
- [ 1.8 - Null Data Type](./section1/08-null-data-type.php)
- [ 1.9 - Arrays](./section1/09-array-data-type.php)
- [ 1.10 - Expressions]()
- [ 1.11 - Operators Part 1]()
- [ 1.12 - Operators Part 2]()
- [ 1.13 - Operator Precedence & Associativity]()
- [ 1.14 - Control Structures - If/Else]()
- [ 1.15 - Loops - Break & Continue]()
- [ 1.16 - Switch Statement]()
- [ 1.17 - Match Expression]()
- [ 1.18 - Return, Declare & Tickable Statements]()
- [ 1.19 - Include & Require]()
- [ 1.20 - Functions & Type Hinting]()
- [ 1.21 - Function Parameters - Named Arguments - Variadic Functions & Unpacking]()
- [ 1.22 - Variable Scopes & Static Variables]()
- [ 1.23 - Variable, Anonymous, Callable, Closure & Arrow Functions]()
- [ 1.24 - Work With Date, Time & Time Zones]()
- [ 1.25 - Work With Arrays - Array Functions]()
- [ 1.26 - PHP.INI - Configuration File]()
- [ 1.27 - Error Handling]()
- [ 1.28 - Apache Configuration & Virtual Hosts]()
- [ 1.29 - Work With File System]()
- [ 1.30 - Mini Exercise Project]()
- [ 1.31 - Mini Exercise Project Solution]()

# Section 2 - Intermediate PHP (OOP)

- [ 2.0 - Intro to Object Oriented PHP]()
- [ 2.1 - Docker - Nginx - FPM]()
- [ 2.2 - Classes & Objects]()
- [ 2.3 - Constructor Property Promotion]()
- [ 2.4 - Namespaces]()
- [ 2.5 - Composer - PSR - Autoloading]()
- [ 2.6 - Class Constants]()
- [ 2.7 - Static Properties & Methods]()
- [ 2.8 - OOP Principles - Encapsulation & Abstraction]()
- [ 2.9 - Inheritance]()
- [ 2.10 - Abstract Classes & Methods]()
- [ 2.11 - Interfaces & Polymorphism]()
- [ 2.12 - Magic Methods]()
- [ 2.13 - Late Static Binding]()
- [ 2.14 - Traits]()
- [ 2.15 - Anonymous Classes]()
- [ 2.16 - Object Comparison - Variable Storage & Zend Value (zval) Container]()
- [ 2.17 - DocBlock]()
- [ 2.18 - Object Cloning]()
- [ 2.19 - Object Serialization]()
- [ 2.20 - Exceptions]()
- [ 2.21 - DateTime Object]()
- [ 2.22 - Iterable Data Type & Iterators]()
- [ 2.23 - Superglobals - Basic Routing Using \$\_SERVER Info]()
- [ 2.24 - Superglobals - \$\_GET/\$\_POST - Forms]()
- [ 2.25 - Superglobals - Sessions & Cookies - Output Buffering]()
- [ 2.26 - Superglobals - \$\_FILES - File Uploads]()
- [ 2.27 - Intro to MVC]()
- [ 2.28 - HTTP Headers]()
- [ 2.29 - Intro to MySQL]()
- [ 2.30 - PDO Part 1 - Prepared Statements - SQL Injection]()
- [ 2.31 - PDO Part 2 - Transactions - ENV Variables]()
- [ 2.32 - PDO Part 3 - Models & Refactoring]()
- [ 2.33 - Section 2 Review & Exercise Project]()

# Section 3 - Advanced PHP (OOP)

- [ 3.0 - Intro to Testing]()
- [ 3.1 - Unit Testing - PHPUnit Part 1]()
- [ 3.2 - Mocking - PHPUnit Part 2]()
- [ 3.3 - Dependency Injection & DI Containers]()
- [ 3.4 - DI Container With & Without Reflection API]()
- [ 3.5 - DI Container With Interface Support]()
- [ 3.6 - Generators]()
- [ 3.7 - WeakMap]()
- [ 3.8 - New In PHP 8.1]()
- [ 3.9 - Covariance & Contravariance]()
- [ 3.10 - Attributes - Simple Router With Attributes]()
- [ 3.11 - Enums]()
- [ 3.12 - Composition vs Inheritance]()
- [ 3.13 - Send Emails - Symfony Mailer]()
- [ 3.14 - Schedule Emails - CRON]()
- [ 3.15 - Intro to Doctrine - DataBase Abstraction Layer - DBAL]()
- [ 3.16 - Doctrine ORM - Entities & Data Mapper Pattern]()
- [ 3.17 - Doctrine ORM Query Builder & DQL]()
- [ 3.18 - Doctrine Migrations]()
- [ 3.19 - Active Record Pattern & Intro To Laravel Eloquent]()
- [ 3.20 - Refactor to use Eloquent instead of Doctrine DBAL]()
- [ 3.21 - PHP cURL API Tutorial & Emailable API Integration]()
- [ 3.22 - Refactor cURL to Guzzle With Retry Logic - Multiple API Integrations]()
- [ 3.23 - Data Transfer Objects - What Are DTOs]()
- [ 3.24 - Value Objects Practical Example]()
- [ 3.25 - Intro to Templating Engines - Blade & Twig]()
- [ 3.26 - How To Install Xdebug 3 with Docker & PhpStorm]()
- [ 3.27 - How To Deploy Vanilla PHP To Cloudways]()
- [ 3.28 - Intro to Slim PHP Framework]()
- [ 3.29 - Add DI Container & Doctrine ORM To Slim PHP Framework]()
- [ 3.30 - Little Refactoring Never Hurt Nobody]()
- [ 3.31 - Create & Run CLI Commands With Symfony Console]()
- [ 3.32 - 100th Video In This PHP Series - Project Overview]()

# Section P - Project Expennies

- [ P.0 - Expennies Project Setup - NPM & Webpack]()
- [ P.1 - Let's Do Some Data Modeling & Create Entities]()
- [ P.2 - User Registration & Password Hashing]()
- [ P.3 - Add Form Validation]()
- [ P.4 - Flash Errors & Old Form Data To Session]()
- [ P.5 - Session Based Authentication - Session Hijacking & Fixation]()
- [ P.6 - Persist Authenticated User Object Throughout The Request]()
- [ P.7 - Refactor Sessions & Create Session Interface]()
- [ P.8 - Sessions & Referrer URL Refactor]()
- [ P.9 - Request Validation - Factory Design Pattern]()
- [ P.10 - CSRF Explained - What Is Cross Site Request Forgery]()
- [ P.11 - XSS Explained - What Is Cross Site Scripting]()
- [ P.12 - Let's Build CRUD Actions For Categories]()
- [ P.13 - First Ajax Request]()
- [ P.14 - POST Ajax Request & CSRF Fields]()
- [ P.15 - Ajax Request Validation]()
- [ P.16 - Display Errors Using JavaScript & Bootstrap]()
- [ P.17 - DataTables & Pagination]()
- [ P.18 - How To Securely Implement Sorting & Filtering]()
- [ P.19 - Transactions CRUD Exercise Overview]()
- [ P.20 - Upload Transaction Receipts With Proper File Validation]()
- [ P.21 - Open Transaction Receipt Files]()
- [ P.22 - Import Transactions Exercise Solution Overview]()
- [ P.23 - Profiling for N+1 Queries]()
- [ P.24 - Reduce Memory Consumption & Speed Up Imports]()
- [ P.25 - Toggle Transaction Review Status - Minor Refactoring]()
- [ P.26 - Decorating Entity Manager to Avoid Inheritance]()
- [ P.27 - Implement Route Model Binding With Slim]()
- [ P.28 - Implement Authorization Using Doctrine Filters]()
- [ P.29 - Set Up Email Verification For New Users]()
- [ P.30 - Secure User Verification Using Signed URLs]()
- [ P.31 - Send Two-Factor Auth Code Via Email]()
- [ P.32 - Implement Two-Factor Authentication Via Email]()
- [ P.33 - Implement Forgot Password Functionality]()
- [ P.34 - Implementing Caching with Redis]()
- [ P.35 - Implementing Rate Limiting]()
- [ P.36 - Uploading Files to S3 Bucket]()
- [ P.37 - Final Exercise - Building Back-End For Dashboard]()
- [ P.38 - Deploy Expennies To Production Using Laravel Forge]()