Autoplay
Autocomplete
Previous Lesson
Complete and Continue
PHP Development Bootcamp: Zero to Mastery
Section 1: Introduction to PHP
Learn PHP with Luis Ramirez (0:54)
What is PHP? (3:15)
PHP Environment (6:42)
Exercise: Meet Your Classmates and Instructor
Course Resources
ZTM Plugin + Understanding Your Video Player
Set Your Learning Streak Goal
Section 2: Working with Data
The PHP Interpreter (5:44)
Running a PHP Script (6:44)
PHP Tags (3:44)
The echo Keyword (5:57)
Comments (2:07)
Variables (5:20)
Assignment Operator (4:11)
Data Types (4:35)
The var_dump Function (3:10)
Null Data Type (3:22)
Boolean Data Type (2:28)
Integers and Floats (3:43)
String Data Type (6:41)
Exercise: Data Type
Arrays (4:44)
Associative Arrays (3:31)
Multidimensional Arrays (3:38)
Type Casting (7:51)
Type Juggling (2:24)
Arithmetic Operators (6:22)
Assignment Operators (2:26)
Comparison Operators (5:41)
Error Control Operator (1:33)
Incrementing and Decrementing Numbers (2:53)
Logical Operators (4:27)
Operator Precedence (5:39)
Constants (4:57)
String Concatenation (3:27)
Let's Have Some Fun (+ More Resources)
Section 3: Adding Logic
Terminology: Expressions (2:54)
Control Structures (8:37)
Switch Statements (6:06)
Match Expressions (4:31)
Functions (4:55)
Function Parameters (4:09)
Function Return Values (2:24)
Type Hinting & Union Types (4:18)
Strict Types (2:40)
Short-Circuiting (2:52)
While Loop (4:57)
For Loop (4:40)
Foreach Loop (2:58)
Unlimited Updates
Section 4: Beginner PHP Challenges
Getting Started with Challenges (4:23)
Coding Exercise: Resistor Colors
Coding Solution: Resistor Colors (3:28)
Coding Exercise: Two-Fer
Coding Solution: Two Fer (2:40)
Coding Exercise: Leap Year
Coding Solution: Leap Year (5:14)
Implement a New Life System
Section 5: Filling in the Gaps
Predefined Constants (5:30)
Alternative Syntax for Constants (4:44)
Unsetting Variables (4:35)
Reading the PHP Documentation (6:28)
Rounding Numbers (7:34)
Alternative if statement syntax (5:10)
Avoiding Functions in Conditions (6:35)
Including PHP Files (10:05)
Variadic Functions (4:28)
Named Arguments (3:00)
Global Variables (4:40)
Static Variables (2:17)
Anonymous and Arrow Functions (8:58)
Callable Type (2:17)
Passing by Reference (4:41)
Array Functions (13:15)
Destructuring Arrays (2:21)
Working with Files (8:02)
Course Check-In
Section 6: More PHP Challenges
Exploring the Challenges (3:08)
Coding Exercise: Human Robot
Coding Solution: Robot Name (5:00)
Coding Exercise: Armstrong Numbers
Coding Solution: Armstrong Numbers (5:48)
Coding Exercise: Series
Coding Solution: Series (7:44)
Section 7: Object-Oriented Programming (OOP)
What is OOP (Object-Oriented Programming)? (4:51)
Classes (5:53)
Properties (5:47)
Magic Methods (5:27)
Constructor Property Promotion (1:59)
Custom Methods (3:56)
Null-safe Operator (2:23)
Understanding Namespaces (2:50)
Creating a Namespace (3:47)
Working with Namespaces (9:50)
Autoloading Classes (6:06)
Using Constants in Classes (2:15)
Static Properties and Methods (5:44)
OOP Principle: Encapsulation (7:46)
OOP Principle: Abstraction (2:35)
OOP Principle: Inheritance (5:46)
Protected Modifier (2:00)
Overriding Methods (9:13)
Abstract Classes and Methods (9:38)
Interfaces (5:07)
OOP Principle: Polymorphism (7:23)
Anonymous Classes (3:54)
Docblocks (5:53)
Throwing Exceptions (6:56)
Custom Exceptions (3:55)
Catching Exceptions (5:34)
The DateTime Class (11:34)
Iterator and Iterable Type (12:20)
Section 8: OOP Challenges
OOP Challenges Overview (1:40)
Coding Exercise: Nucleotide Count
Coding Solution: Nucleotide Count (2:32)
Coding Exercise: Grade School
Coding Solution: Grade School (5:58)
Section 9: Master Project: Framework Foundation
Project Overview (4:52)
Text Editors (3:56)
Understanding the LAMP stack (5:40)
Exploring XAMPP (2:42)
The htdocs Folder (5:27)
Configuring Virtual Hosts in Apache (11:19)
Configuring PHP (4:37)
Creating an Application Class (4:18)
Bootstrapping an Application (4:25)
The Command Line (6:56)
Understanding PSR (3:09)
Installing Composer (7:08)
JSON Crash Course (5:05)
Initializing Composer (7:13)
Generating Autoload Files (3:15)
Including Autoload Files (2:25)
What is Git? (2:39)
Using GitHub (6:17)
Exploring Git Files (5:54)
Exercise: Imposter Syndrome (2:55)
Section 10: Master Project: Routing
Understanding Routing (3:57)
Apache Mod Rewrite (7:27)
The htaccess File (6:15)
Sugar Functions (2:56)
Creating a Router Class (2:32)
Adding Routes (4:56)
Understanding HTTP Methods (5:01)
Supporting HTTP Methods in Routes (2:29)
Normalizing Paths (3:35)
Exploring Regular Expressions (7:09)
Regular Expressions in PHP (3:06)
MVC Design Pattern (6:25)
Creating a Controller (1:56)
Registering Controllers (2:52)
Class Magic Constant (2:45)
Dispatching a Route (4:39)
Finding Matches with Regular Expressions (4:28)
Instantiating Classes with Strings (2:58)
PSR-12 Auto Formatting (5:15)
Section 11: Master Project: Template Engines
Understanding Template Engines (2:40)
Creating a Template Engine Class (2:08)
Setting a Base Path (4:29)
Rendering a Template (3:00)
Extracting Arrays (3:56)
Understanding Output Buffering (4:34)
Creating an Output Buffer (2:50)
Loading Assets (3:25)
Adding Partials (4:14)
Exercise: Creating an About Page (4:47)
Escaping Data (7:30)
Autoloading Functions (4:57)
Section 12: Master Project: Containers and Dependency Injection
Understanding Dependency Injection (3:32)
Creating a Container (2:34)
External Definitions File (4:40)
Factory Design Pattern (4:09)
Merging Arrays (2:20)
Reflective Programming (6:56)
Validating Classes (3:33)
Validating the Constructor Method (2:28)
Retrieving the Constructor Parameters (2:24)
Validating Parameters (6:38)
Invoking Factory Functions (4:42)
Instantiating a Class with Dependencies (3:36)
Understanding Middleware (3:11)
Supporting Router Middleware (2:37)
Adding Middleware (2:27)
Creating Middleware (1:52)
Interface Contracts (4:02)
Chaining Callback Functions (4:06)
Looping through Middleware (3:09)
Supporting Dependency Injection in Middleware (2:14)
Global Template Variables (3:06)
Singleton Pattern (7:33)
Section 13: Master Project: Form Validation
Preparing the Registration Form (4:55)
Configuring the Form (6:51)
Handling POST Data (3:02)
Understanding Services (4:16)
Creating a Validator Class (5:38)
Validation Rule Contract (5:42)
Registering a Rule (4:25)
Applying Rules to Fields (7:57)
Storing Validation Errors (3:05)
Custom Validation Exception (5:57)
HTTP Status Codes (4:59)
Custom Middleware (3:48)
Redirection with Headers (6:25)
Passing on the Errors (3:18)
HTTP Referrer (2:48)
Understanding Sessions (2:23)
Enabling Sessions (4:20)
Handling Session Exceptions (4:03)
Common Session Error (6:16)
Closing the Session Early (1:05)
Injecting Errors into a Template (5:12)
Flashing Errors (1:57)
Displaying Errors (3:00)
Validating Emails (4:38)
Supporting Rule Parameters (5:38)
Minimum Validation Rule (3:51)
In Validation Rule (3:30)
Exercise: URL Validation Rule (2:57)
Password Matching Rule (3:45)
Prefilling a Form (6:01)
Filtering Sensitive Data (3:49)
Section 14: Master Project: MySQL
Introduction to SQL (5:29)
Creating a Database (2:31)
Creating Tables (9:12)
Inserting Data (4:05)
Reading Data (3:41)
Updating Data (1:56)
Deleting Data (2:18)
Using PHPMyAdmin (7:44)
Enabling PDO Extension (4:27)
Custom Composer Scripts (3:46)
Understanding DSN (1:44)
Creating a DSN String (6:04)
Connecting to a Database (3:00)
The PDOException Class (3:42)
Refactoring the Database Connection (5:13)
Querying the Database (4:30)
Fetch Modes (4:09)
SQL Injections (5:27)
Prepared Statements (5:46)
Understanding Transactions (3:08)
Creating Transactions with PDO (4:18)
Understanding Data Modeling (3:57)
Designing a User Table (10:10)
Creating a Table in an SQL File (6:07)
Loading Files (2:24)
Conditionally Creating Tables (2:08)
Refactoring the Query (2:24)
Section 15: Master Project: User Registration and Authentication
Database Container Definition (1:32)
Understanding Environment Variables (5:37)
Exercise: Updating the CLI to use Environment Variables
Creating Environment Variables (5:21)
Ignoring Environment Files (1:58)
Passing on the Container to Definitions (4:31)
Counting Records with SQL (2:53)
Supporting Prepared Statements (2:06)
Validating Duplicate Emails (4:44)
Exercise: Inserting a User (4:19)
Understanding Hashing (5:32)
Hashing a Password (5:29)
Preparing the Login Page (2:51)
Exercise: Validating the Login Form (7:00)
Validating the User’s Credentials (9:45)
Understanding Session Hijacking (3:18)
Configuring Session Cookies (6:25)
Regenerating a Session ID (1:51)
Protecting Routes (3:47)
Applying Route Middleware (7:00)
Logging out of the Application (2:55)
Authenticating Registered Users (2:43)
Understanding CSRF (2:07)
Generating a CSRF Token (4:29)
Rendering Tokens (3:10)
Validating CSRF Tokens (7:11)
Conditionally Rendering Sections (1:54)
Section 16: Master Project: CRUD Transactions
Designing the Transactions Table (3:42)
Understanding Database Relationships (5:47)
Adding Foreign Keys (6:33)
Preparing the Create Transaction Page (4:10)
Validating Transactions (3:53)
Validating Maximum Character Length (4:28)
Validating Numbers (2:41)
Validating Dates (4:51)
Creating a Transaction (7:04)
Retrieving Transactions (6:08)
Formatting Dates with SQL (3:30)
Query Parameters (5:48)
SQL LIKE Clause (3:10)
Filtering Transactions (1:35)
Escaping the Search Term (1:58)
SQL Limit Clause (2:30)
Limiting Results (5:08)
Previous Page Link (4:20)
Next Page Link (5:56)
Page Number Links (7:08)
Preparing the Edit Route (6:02)
Replacing Strings with Regular Expressions (6:17)
Extracting Route Parameter Values (6:50)
Edit Transaction Template (7:15)
Updating a Transaction (6:51)
Overriding HTTP Methods (5:55)
Deleting a Transaction (3:20)
Section 17: Master Project: Handling File Uploads
Preparing the Receipt Controller (3:57)
Encoding File Data (2:39)
Exercise: Creating a Receipt Service (6:25)
Validating a File Upload (3:36)
Validating File Sizes (2:51)
Validating Filenames (3:43)
Validating File Mime Types (3:50)
Generating a Random Filename (3:36)
Moving Uploaded Files (4:53)
Designing the Receipts Table (4:56)
Storing the Receipt (3:00)
Displaying Receipts (7:44)
Validating the Download Request (4:13)
Downloading Files (6:31)
Deleting a Receipt (4:34)
Section 18: Master Project: Everything Else
Magic Numbers (5:54)
Destroying Session Cookies (5:50)
Rendering a 404 Page (7:10)
Section 19: Master Project: Deployment
Configuring a Server (8:45)
Understanding Deployment (3:36)
Configuring an Application (2:24)
Setting up our Project (13:23)
Conclusion (1:24)
Where To Go From Here?
Thank You! (1:17)
Review This Course!
Become An Alumni
Learning Guideline
ZTM Events Every Month
LinkedIn Endorsements
Logging out of the Application
This lecture is available exclusively for ZTM Academy members.
If you're already a member,
you'll need to login
.
Join ZTM To Unlock All Lectures