Learn modern PHP and become a better developer. This is the only PHP course you need to go from complete beginner to coding your own PHP applications and working with existing PHP applications.
PHP Development Bootcamp: Zero to Mastery
PHP Development Bootcamp: Zero to Mastery is a 308-lesson 23 hours 47 minutes self-paced course by Zero To Mastery. Learn modern PHP and become a better developer.
Course facts
- Lessons
- 308
- Duration
- 23 hours 47 minutes
- Level
- All levels
- Language
- English
- Updated
- Instructor
- Zero To Mastery
- Price
- Premium
Learn modern PHP. We guarantee you that this is the most comprehensive and up-to-date PHP Bootcamp course to go from absolute beginner to mastering PHP web development, getting hired, and advancing your career.
Additional
Who teaches PHP Development Bootcamp: Zero to Mastery? Zero To Mastery
Zero To Mastery (ZTM) is a Toronto-based online coding academy founded by Andrei Neagoie, originally a senior developer at large Canadian tech firms before turning to teaching full-time. The academy's signature is the cohort-based bootcamp track combined with a deep self-paced course library, all aimed at career-changers and self-taught developers preparing to land software-engineering roles at top companies.
The instructor roster has grown well beyond Andrei to include other senior practitioners: Daniel Bourke (machine learning), Aleksa Tešić (DevOps), Jacinto Wong, and others. Courses cover the full software-engineering career path: web development with React and Next.js, Python, machine learning and deep learning, DevOps and cloud, system design, mobile, and the algorithm / data-structure interview prep that gates engineering jobs.
The CourseFlix listing under this source carries over 120 ZTM courses spanning that full range. Material is paid; ZTM itself runs on a monthly / annual membership model. The teaching style favours long-form, project-based courses where students build complete portfolio-quality applications rather than disconnected feature tutorials.
What lessons are included in PHP Development Bootcamp: Zero to Mastery?
| # | Lesson Title | Duration | Access |
|---|---|---|---|
| 1 | Learn PHP with Luis Ramirez Demo | 00:55 | |
| 2 | What is PHP? | 03:16 | |
| 3 | PHP Environment | 06:43 | |
| 4 | The PHP Interpreter | 05:45 | |
| 5 | Running a PHP Script | 06:45 | |
| 6 | PHP Tags | 03:45 | |
| 7 | The echo Keyword | 05:58 | |
| 8 | Comments | 02:08 | |
| 9 | Variables | 05:21 | |
| 10 | Assignment Operator | 04:12 | |
| 11 | Data Types | 04:36 | |
| 12 | The var_dump Function | 03:11 | |
| 13 | Null Data Type | 03:23 | |
| 14 | Boolean Data Type | 02:29 | |
| 15 | Integers and Floats | 03:44 | |
| 16 | String Data Type | 06:42 | |
| 17 | Arrays | 04:45 | |
| 18 | Associative Arrays | 03:32 | |
| 19 | Multidimensional Arrays | 03:39 | |
| 20 | Type Casting | 07:52 | |
| 21 | Type Juggling | 02:25 | |
| 22 | Arithmetic Operators | 06:23 | |
| 23 | Assignment Operators | 02:27 | |
| 24 | Comparison Operators | 05:42 | |
| 25 | Error Control Operator | 01:34 | |
| 26 | Incrementing and Decrementing Numbers | 02:54 | |
| 27 | Logical Operators | 04:28 | |
| 28 | Operator Precedence | 05:40 | |
| 29 | Constants | 04:58 | |
| 30 | String Concatenation | 03:28 | |
| 31 | Terminology: Expressions | 02:55 | |
| 32 | Control Structures | 08:38 | |
| 33 | Switch Statements | 06:07 | |
| 34 | Match Expressions | 04:31 | |
| 35 | Functions | 04:56 | |
| 36 | Function Parameters | 04:10 | |
| 37 | Function Return Values | 02:25 | |
| 38 | Type Hinting & Union Types | 04:19 | |
| 39 | Strict Types | 02:41 | |
| 40 | Short-Circuiting | 02:53 | |
| 41 | While Loop | 04:58 | |
| 42 | For Loop | 04:41 | |
| 43 | Foreach Loop | 02:59 | |
| 44 | Getting Started with Challenges | 04:24 | |
| 45 | Coding Solution: Resistor Colors | 03:28 | |
| 46 | Coding Solution: Two Fer | 02:41 | |
| 47 | Coding Solution: Leap Year | 05:15 | |
| 48 | Predefined Constants | 05:31 | |
| 49 | Alternative Syntax for Constants | 04:45 | |
| 50 | Unsetting Variables | 04:36 | |
| 51 | Reading the PHP Documentation | 06:29 | |
| 52 | Rounding Numbers | 07:35 | |
| 53 | Alternative if statement syntax | 05:11 | |
| 54 | Avoiding Functions in Conditions | 06:36 | |
| 55 | Including PHP Files | 10:06 | |
| 56 | Variadic Functions | 04:29 | |
| 57 | Named Arguments | 03:01 | |
| 58 | Global Variables | 04:41 | |
| 59 | Static Variables | 02:18 | |
| 60 | Anonymous and Arrow Functions | 08:59 | |
| 61 | Callable Type | 02:18 | |
| 62 | Passing by Reference | 04:42 | |
| 63 | Array Functions | 13:16 | |
| 64 | Destructuring Arrays | 02:22 | |
| 65 | Working with Files | 08:03 | |
| 66 | Exploring the Challenges | 03:08 | |
| 67 | Coding Solution: Robot Name | 05:01 | |
| 68 | Coding Solution: Armstrong Numbers | 05:49 | |
| 69 | Coding Solution: Series | 07:45 | |
| 70 | What is OOP (Object-Oriented Programming)? | 04:52 | |
| 71 | Classes | 05:54 | |
| 72 | Properties | 05:48 | |
| 73 | Magic Methods | 05:28 | |
| 74 | Constructor Property Promotion | 01:59 | |
| 75 | Custom Methods | 03:57 | |
| 76 | Null-safe Operator | 02:24 | |
| 77 | Understanding Namespaces | 02:51 | |
| 78 | Creating a Namespace | 03:48 | |
| 79 | Working with Namespaces | 09:51 | |
| 80 | Autoloading Classes | 06:07 | |
| 81 | Using Constants in Classes | 02:16 | |
| 82 | Static Properties and Methods | 05:45 | |
| 83 | OOP Principle: Encapsulation | 07:47 | |
| 84 | OOP Principle: Abstraction | 02:36 | |
| 85 | OOP Principle: Inheritance | 05:47 | |
| 86 | Protected Modifier | 02:01 | |
| 87 | Overriding Methods | 09:14 | |
| 88 | Abstract Classes and Methods | 09:39 | |
| 89 | Interfaces | 05:08 | |
| 90 | OOP Principle: Polymorphism | 07:24 | |
| 91 | Anonymous Classes | 03:55 | |
| 92 | Docblocks | 05:54 | |
| 93 | Throwing Exceptions | 06:57 | |
| 94 | Custom Exceptions | 03:56 | |
| 95 | Catching Exceptions | 05:35 | |
| 96 | The DateTime Class | 11:35 | |
| 97 | Iterator and Iterable Type | 12:21 | |
| 98 | OOP Challenges Overview | 01:41 | |
| 99 | Coding Solution: Nucleotide Count | 02:33 | |
| 100 | Coding Solution: Grade School | 05:59 | |
| 101 | Project Overview | 04:53 | |
| 102 | Text Editors | 03:57 | |
| 103 | Understanding the LAMP stack | 05:41 | |
| 104 | Exploring XAMPP | 02:43 | |
| 105 | The htdocs Folder | 05:28 | |
| 106 | Configuring Virtual Hosts in Apache | 11:20 | |
| 107 | Configuring PHP | 04:38 | |
| 108 | Creating an Application Class | 04:19 | |
| 109 | Bootstrapping an Application | 04:26 | |
| 110 | The Command Line | 06:57 | |
| 111 | Understanding PSR | 03:10 | |
| 112 | Installing Composer | 07:09 | |
| 113 | JSON Crash Course | 05:06 | |
| 114 | Initializing Composer | 07:14 | |
| 115 | Generating Autoload Files | 03:16 | |
| 116 | Including Autoload Files | 02:26 | |
| 117 | What is Git? | 02:40 | |
| 118 | Using GitHub | 06:18 | |
| 119 | Exploring Git Files | 05:55 | |
| 120 | Exercise: Imposter Syndrome | 02:57 | |
| 121 | Understanding Routing | 03:58 | |
| 122 | Apache Mod Rewrite | 07:28 | |
| 123 | The htaccess File | 06:16 | |
| 124 | Sugar Functions | 02:57 | |
| 125 | Creating a Router Class | 02:33 | |
| 126 | Adding Routes | 04:57 | |
| 127 | Understanding HTTP Methods | 05:02 | |
| 128 | Supporting HTTP Methods in Routes | 02:30 | |
| 129 | Normalizing Paths | 03:36 | |
| 130 | Exploring Regular Expressions | 07:10 | |
| 131 | Regular Expressions in PHP | 03:07 | |
| 132 | MVC Design Pattern | 06:26 | |
| 133 | Creating a Controller | 01:57 | |
| 134 | Registering Controllers | 02:53 | |
| 135 | Class Magic Constant | 02:46 | |
| 136 | Dispatching a Route | 04:40 | |
| 137 | Finding Matches with Regular Expressions | 04:29 | |
| 138 | Instantiating Classes with Strings | 02:59 | |
| 139 | PSR-12 Auto Formatting | 05:16 | |
| 140 | Understanding Template Engines | 02:41 | |
| 141 | Creating a Template Engine Class | 02:09 | |
| 142 | Setting a Base Path | 04:30 | |
| 143 | Rendering a Template | 03:01 | |
| 144 | Extracting Arrays | 03:57 | |
| 145 | Understanding Output Buffering | 04:35 | |
| 146 | Creating an Output Buffer | 02:51 | |
| 147 | Loading Assets | 03:26 | |
| 148 | Adding Partials | 04:15 | |
| 149 | Exercise: Creating an About Page | 04:48 | |
| 150 | Escaping Data | 07:31 | |
| 151 | Autoloading Functions | 04:58 | |
| 152 | Understanding Dependency Injection | 03:32 | |
| 153 | Creating a Container | 02:35 | |
| 154 | External Definitions File | 04:41 | |
| 155 | Factory Design Pattern | 04:10 | |
| 156 | Merging Arrays | 02:21 | |
| 157 | Reflective Programming | 06:57 | |
| 158 | Validating Classes | 03:34 | |
| 159 | Validating the Constructor Method | 02:29 | |
| 160 | Retrieving the Constructor Parameters | 02:25 | |
| 161 | Validating Parameters | 06:39 | |
| 162 | Invoking Factory Functions | 04:43 | |
| 163 | Instantiating a Class with Dependencies | 03:37 | |
| 164 | Understanding Middleware | 03:12 | |
| 165 | Supporting Router Middleware | 02:38 | |
| 166 | Adding Middleware | 02:28 | |
| 167 | Creating Middleware | 01:53 | |
| 168 | Interface Contracts | 04:03 | |
| 169 | Chaining Callback Functions | 04:07 | |
| 170 | Looping through Middleware | 03:10 | |
| 171 | Supporting Dependency Injection in Middleware | 02:15 | |
| 172 | Global Template Variables | 03:07 | |
| 173 | Singleton Pattern | 07:34 | |
| 174 | Preparing the Registration Form | 04:56 | |
| 175 | Configuring the Form | 06:52 | |
| 176 | Handling POST Data | 03:03 | |
| 177 | Understanding Services | 04:17 | |
| 178 | Creating a Validator Class | 05:39 | |
| 179 | Validation Rule Contract | 05:43 | |
| 180 | Registering a Rule | 04:26 | |
| 181 | Applying Rules to Fields | 07:58 | |
| 182 | Storing Validation Errors | 03:06 | |
| 183 | Custom Validation Exception | 05:58 | |
| 184 | HTTP Status Codes | 05:00 | |
| 185 | Custom Middleware | 03:49 | |
| 186 | Redirection with Headers | 06:26 | |
| 187 | Passing on the Errors | 03:19 | |
| 188 | HTTP Referrer | 02:49 | |
| 189 | Understanding Sessions | 02:24 | |
| 190 | Enabling Sessions | 04:21 | |
| 191 | Handling Session Exceptions | 04:04 | |
| 192 | Common Session Error | 06:17 | |
| 193 | Closing the Session Early | 01:06 | |
| 194 | Injecting Errors into a Template | 05:13 | |
| 195 | Flashing Errors | 01:58 | |
| 196 | Displaying Errors | 03:01 | |
| 197 | Validating Emails | 04:39 | |
| 198 | Supporting Rule Parameters | 05:39 | |
| 199 | Minimum Validation Rule | 03:52 | |
| 200 | In Validation Rule | 03:31 | |
| 201 | Exercise: URL Validation Rule | 02:58 | |
| 202 | Password Matching Rule | 03:46 | |
| 203 | Prefilling a Form | 06:02 | |
| 204 | Filtering Sensitive Data | 03:50 | |
| 205 | Introduction to SQL | 05:30 | |
| 206 | Creating a Database | 02:32 | |
| 207 | Creating Tables | 09:13 | |
| 208 | Inserting Data | 04:06 | |
| 209 | Reading Data | 03:42 | |
| 210 | Updating Data | 01:57 | |
| 211 | Deleting Data | 02:19 | |
| 212 | Using PHPMyAdmin | 07:45 | |
| 213 | Enabling PDO Extension | 04:28 | |
| 214 | Custom Composer Scripts | 03:47 | |
| 215 | Understanding DSN | 01:45 | |
| 216 | Creating a DSN String | 06:05 | |
| 217 | Connecting to a Database | 03:01 | |
| 218 | The PDOException Class | 03:43 | |
| 219 | Refactoring the Database Connection | 05:14 | |
| 220 | Querying the Database | 04:31 | |
| 221 | Fetch Modes | 04:10 | |
| 222 | SQL Injections | 05:28 | |
| 223 | Prepared Statements | 05:47 | |
| 224 | Understanding Transactions | 03:09 | |
| 225 | Creating Transactions with PDO | 04:19 | |
| 226 | Understanding Data Modeling | 03:58 | |
| 227 | Designing a User Table | 10:11 | |
| 228 | Creating a Table in an SQL File | 06:08 | |
| 229 | Loading Files | 02:25 | |
| 230 | Conditionally Creating Tables | 02:09 | |
| 231 | Refactoring the Query | 02:25 | |
| 232 | Database Container Definition | 01:33 | |
| 233 | Understanding Environment Variables | 05:38 | |
| 234 | Creating Environment Variables | 05:22 | |
| 235 | Ignoring Environment Files | 01:59 | |
| 236 | Passing on the Container to Definitions | 04:31 | |
| 237 | Counting Records with SQL | 02:54 | |
| 238 | Supporting Prepared Statements | 02:07 | |
| 239 | Validating Duplicate Emails | 04:45 | |
| 240 | Exercise: Inserting a User | 04:20 | |
| 241 | Understanding Hashing | 05:33 | |
| 242 | Hashing a Password | 05:30 | |
| 243 | Preparing the Login Page | 02:52 | |
| 244 | Exercise: Validating the Login Form | 07:01 | |
| 245 | Validating the User’s Credentials | 09:46 | |
| 246 | Understanding Session Hijacking | 03:19 | |
| 247 | Configuring Session Cookies | 06:26 | |
| 248 | Regenerating a Session ID | 01:52 | |
| 249 | Protecting Routes | 03:48 | |
| 250 | Applying Route Middleware | 07:01 | |
| 251 | Logging out of the Application | 02:56 | |
| 252 | Authenticating Registered Users | 02:44 | |
| 253 | Understanding CSRF | 02:08 | |
| 254 | Generating a CSRF Token | 04:30 | |
| 255 | Rendering Tokens | 03:11 | |
| 256 | Validating CSRF Tokens | 07:12 | |
| 257 | Conditionally Rendering Sections | 01:55 | |
| 258 | Designing the Transactions Table | 03:43 | |
| 259 | Understanding Database Relationships | 05:48 | |
| 260 | Adding Foreign Keys | 06:34 | |
| 261 | Preparing the Create Transaction Page | 04:11 | |
| 262 | Validating Transactions | 03:54 | |
| 263 | Validating Maximum Character Length | 04:29 | |
| 264 | Validating Numbers | 02:42 | |
| 265 | Validating Dates | 04:52 | |
| 266 | Creating a Transaction | 07:05 | |
| 267 | Retrieving Transactions | 06:09 | |
| 268 | Formatting Dates with SQL | 03:31 | |
| 269 | Query Parameters | 05:49 | |
| 270 | SQL LIKE Clause | 03:11 | |
| 271 | Filtering Transactions | 01:36 | |
| 272 | Escaping the Search Term | 01:59 | |
| 273 | SQL Limit Clause | 02:31 | |
| 274 | Limiting Results | 05:09 | |
| 275 | Previous Page Link | 04:21 | |
| 276 | Next Page Link | 05:57 | |
| 277 | Page Number Links | 07:09 | |
| 278 | Preparing the Edit Route | 06:03 | |
| 279 | Replacing Strings with Regular Expressions | 06:18 | |
| 280 | Extracting Route Parameter Values | 06:51 | |
| 281 | Edit Transaction Template | 07:16 | |
| 282 | Updating a Transaction | 06:52 | |
| 283 | Overriding HTTP Methods | 05:56 | |
| 284 | Deleting a Transaction | 03:21 | |
| 285 | Preparing the Receipt Controller | 03:58 | |
| 286 | Encoding File Data | 02:40 | |
| 287 | Exercise: Creating a Receipt Service | 06:26 | |
| 288 | Validating a File Upload | 03:37 | |
| 289 | Validating File Sizes | 02:52 | |
| 290 | Validating Filenames | 03:44 | |
| 291 | Validating File Mime Types | 03:51 | |
| 292 | Generating a Random Filename | 03:37 | |
| 293 | Moving Uploaded Files | 04:54 | |
| 294 | Designing the Receipts Table | 04:57 | |
| 295 | Storing the Receipt | 03:01 | |
| 296 | Displaying Receipts | 07:45 | |
| 297 | Validating the Download Request | 04:14 | |
| 298 | Downloading Files | 06:32 | |
| 299 | Deleting a Receipt | 04:35 | |
| 300 | Magic Numbers | 05:55 | |
| 301 | Destroying Session Cookies | 05:51 | |
| 302 | Rendering a 404 Page | 07:11 | |
| 303 | Configuring a Server | 08:46 | |
| 304 | Understanding Deployment | 03:37 | |
| 305 | Configuring an Application | 02:25 | |
| 306 | Setting up our Project | 13:24 | |
| 307 | Conclusion | 01:25 | |
| 308 | Thank You! | 01:18 |
Get instant access to all 307 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.
Learn more about subscriptionBooks
What courses are similar to PHP Development Bootcamp: Zero to Mastery?
-
Updated 2y agoUltimate PHP, Laravel, CSS & Sass! Learn PHP, Laravel & Sass
By: UdemyHave you have been taking courses that are not up to date or courses that after finishing them you will immediately know that is not what they promised to be in95h 30m5/5 -
Updated 3y agoBuild a Placekitten clone with Silex
By: CodecoursePlacekitten's API generates image placeholders of cute cats in any size for development. Let's rebuild it.34m -
Updated 2y agoPractical Object Oriented Programming
By: CodecourseLearn OOP with a practical twist, and finish up by building a todo application to cover what we've learned.3h 28m5/5 -
Updated 2y agoMake a Google search engine clone: JavaScript PHP and MySQL
By: UdemyDo you want to become an expert in JavaScript, PHP and MySQL?Do you want to build a real search engine just like Google? If so, you’re in the right place!5h 47m5/5 -
Updated 2y agoRefactoring to Collections
By: Adam WathanLearn how to craft simple, elegant code that's a pleasure to write and a joy to maintain.4h 44m -
Updated 2y agoMaster Laravel & Create High-Level Applications with Laravel
By: UdemyLearn Laravel, while creating an eShop in the process. Bring to live all those ideas in your head after learning Laravel by doing. The course is compatible with14h 44m -
Updated 2y agoPHP From Scratch 2024 | Beginner To Advanced
By: Udemy, Brad TraversyLearn PHP fundamentals then build a job listing website from the ground up, using a Laravel-like infrastructure. This course is broken up into two parts. First18h 17m5/5 -
Updated 2y agoSelf-Made SaaS Course
By: Andrew SchmelyunLearn how to build a full SaaS app from idea to launch. This course walks you through each step in clear, simple terms.5h 19m
More courses by Zero To Mastery
-
Updated 10mo agoComplete Web Developer in 2025: Zero to Mastery
Learn to code. Get hired. This is one of the most popular, highly rated coding bootcamps online. It's also the most moderen and up-to-date. Guaranteed. You'll g37h 3m5/5 -
ClassicComplete Next.js Developer in 2023: Zero to Mastery
Learn Next JS from industry experts using modern best practices. The only Next JS tutorial + projects course you need to learn Next JS, build enterprise-level R27h 12m5/5 -
ClassicComplete SQL + Databases Bootcamp: Zero to Mastery
With so many online resources available, it can be paralyzing not only figuring out where to start but more importantly which courses will actually teach you th24h 6m5/5 -
Updated 3y agoPower BI Bootcamp: Zero to Mastery
This Power BI Bootcamp will take you from absolute beginner in Power BI to being able to get hired as a confident and effective Business Intelligence Analyst. Y16h 55m -
Updated 3y agoBash Scripting: Learn Shell Scripting
Learn Bash Scripting from scratch, from an industry expert. You'll learn Shell Scripting fundamentals, master the command line, and get the practice.9h 38m -
Updated 3y agoChatGPT & Large Language Models (LLMs): A Practical Guide
Learn how ChatGPT actually works under the hood! This byte-sized course will get you up to speed on Large Language Models (LLMs) including topics like Prompt De58m5/5