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
Creating a Namespace
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