Learn To Write Clean PHP Code THAT ALWAYS WORKS!

Build AN ENTIRE PHP APPLICATION from scratch using Test Driven Development ☄️

In this course, we're going to take our dev skills to the next level by creating an API from scratch...but with a slight twist....we are going to use Test Driven Development with the PestPHP testing framework to figure out all functionality.


This is THE BEST WAY to learn how to build something which you have 100% confidence in and you'll also discover that TDD is not complicated...in fact, once mastered, it will make your life easier and your code a lot more reliable!

TDD is a modern development skill which will improve you as a developer and make you an asset to any team.

You'll gain a deep understanding of how to build an API in addition to knowing how to create and use the tools which are used to test an API using only PHP. We'll also look at how to structure our code in a way similar to frameworks like Symfony and Laravel.

This is a great way to learn A LOAD OF NEW SKILLS because you'll be building and testing something REAL. All developers tells me that this kind of practical approach is how they prefer to learn.

Why Should You Enroll In This Course?


💰 These skills are guaranteed to advance your career

🎼 You will learn the testing techniques which are used in Laravel and Symfony

🆕 PEST is current and relevant to the market

🧠 Building something real is how you learn to build something real!

🌴 Flexible. You can work at your own pace. Take as long as it takes.

🔍 No other courses teach this subject in the same way

📈 Promotion. To become a senior PHP developer you will need to understand testing frameworks

💼 Career mobility. These skills can be applied to a wide range of programming languages


By the end of the course you will have experience and complete understanding of all these concepts:

Building PHP API's - Expectations
Hooks - Datasets - Filtering Tests
Grouping Tests - Mocking - Custom Test Helpers
Custom Expectations - Refactoring With Confidence - Data Testing
PHP Framework Structure - Routing Techniques - Integration Testing
Feature Testing - Unit Testing - Testing API Endpoints
All PEST Features - HTTP Request / Response - Routing Techniques
Data Mapper and Repository Patterns - Faking Data
PHP Data Objects (PDO) - Understanding Duplication
The Pragmatic Challenges of TDD - Json Web Tokens API Security


PLUS MUCH MORE!!


BUY THIS COURSE NOW

$69 + VAT added on checkout page


✅ Exclusive Content
✅ Subtitles in your language
✅ Over 90 video tutorials for $69
✅ Hours of quality content - no filler
✅ All code examples included
✅ Industry standard practices
✅ Lifetime ownership
📜 Certificate of achievement
🤝 30 day money back guarantee




HOW DOES THAT SOUND SO FAR?..

..HERE'S WHAT'S COVERED IN THIS COURSE

Take a minute to think about how many much-sought-after skills you will gain by building an API from scratch using Test Driven Development combined with Pest PHP. This is not simply a PHP testing course, this is a course which is going to take your PHP skills to a whole new level.

I enrolled in a similar course a few years ago and it changed my career and my whole programming outlook. Everything became easier...and BETTER PAID!

I'm talking about things like gaining a complete understanding of application structure and EVERYTHING which happens between Request and Response. Knowing all of the components so well that you know when to use feature tests and when to use unit tests, where to mock objects and exactly how to do it.


I'll also cover something which I have not seen anyone else cover in this kind of course. Pragmatism.I'll address the challenges of TDD and show you how to avoid the ways in which it can be misused or even over-used.

Below is a list of the content that I cover. These cover how to build an API from scratch PLUS all of the Pest features that you need to know.



Feature Tests


  • Installing Pest
  • Create an API Test
  • Custom Test Helpers
  • Custom Test Expectations
  • Returning a Real Response


Unit Tests
  • Response Test
  • Response Class
  • Application Sequence
  • Request Class
  • Request Test
  • Request Query Params
  • Request Path
  • Request Method
  • Kernel Class


Routing
  • The Multiple Routes Problem
  • Refactor For Routing
  • Router Test
  • Router Dispatch
  • Route Handling Outcomes
  • Setting Routes


Dependency Injection
  • Service Container
  • Binding a Service
  • Controller Classes
  • Invoking Handlers
  • Route Parameters
  • Resolving Route Handlers
  • Mocking Dependencies
  • Testing Routing Errors
  • Using Datasets
  • Route Handler Resolver Test
  • Resolving a Controller Test



Entities and Repositories
  • Data Considerations
  • Repositories
  • Grouping Tests
  • Book Repository
  • Entities
  • The Dirty Filter
  • Book Class
  • Nesting Objects
  • Serializing Objects
  • Duplication vs Coincidence


Querying Data
  • Faking Database Rows
  • Sqlite
  • PHP Data Objects (PDO)
  • Retrying Test Using --retry
  • Connection Objects
  • Connection Test
  • Connection Class


Migrations
  • Environment Variables
  • Migration Files
  • Migrating a Test Database
  • Console Commands
  • Migration Dependencies
  • Database Transactions



Persisting Data
  • Data Mappers
  • AuthorMapper Test
  • AuthorMapper
  • Database Test Assertions
  • Querying Any Table
  • BookMapper and Test




Refactoring FTW
  • Fixing Feature Tests
  • Refactoring Out Duplication
  • Matching Project Structure
  • Updating Pest
  • Architecture Testing
  • Testing For Strict Types




Real usage chapter
Real Usage
  • Fixing Feature Tests
  • Refactoring Out Duplication
  • Matching Project Structure
  • Updating Pest
  • Architecture Testing
  • Testing For Strict Types


JsonResponse Objects
  • What is a JsonResponse?
  • Specific Return Types
  • JsonResponse Test
  • JsonResponse Class
  • Final Client E2E Test



JWT Auth Middleware
Jwt Auth Middleware
  • PSR 15 Middleware
  • Request Handler Test
  • Request Handler Class
  • Refactoring For Middleware
  • Introduction to Json Web Tokens (JWT)
  • JWT Structure
  • PHP + JWT
  • Encoding the JWT
  • JWT Auth Middleware Test
  • JWT Authenticate Middleware
  • Testing Valid Tokens
  • JWT + PHP Security Considerations


BUY THIS COURSE NOW

$69 + VAT added on checkout page


✅ Exclusive Content
✅ Subtitles in your language
✅ Over 90 video tutorials for $69
✅ Hours of quality content - no filler
✅ All code examples included
✅ Industry standard practices
✅ Lifetime ownership
📜 Certificate of achievement
🤝 30 day money back guarantee



Check out some example videos from the course 🚀


All videos come with subtitles in your language

Creating Custom Test Helpers

We're doing everything from scratch in this course so let's create a test helper which will enable us to make 'requests' to our API.

Creating Custom Test Expectations

In Pest we use expectations to test that our code is behaving as expected...and it's really easy to create your own. Here I'll create one which matches json strings against expected json strings. Nice 😎

Testing Request Objects

We're going to create our own Request class so let's test that the query params can be retrieved off of it. This will show you how some things work which we take for granted.

Risky Tests and Test Todo's

I sometimes like to write out the tests I'll need for a particular class. In Pest I just need to chain a todo() function on an empty test and they'll now be marked as 'todo' instead of 'risky'.

Faking Database Rows

Let me show you how you can fake a database row to keep your tests passing until you have created your tables. This way we are focused more on our public API and the database isn't calling the shots.

Migrating a Test Database

Let's create a method which will be responsible for executing the migrations files and will run before each of your tests.

Database Test Assertions

Let's create our assertDatabaseHas method which will be able to assert that a table contains a particular record based on a set criteria.

Some frameworks have already created methods like this for you but where's the fun in that? No microwavable pizzas in this kitchen...everything's made from fresh!

BUY THIS COURSE NOW

$69 + VAT added on checkout page


✅ Exclusive Content
✅ Subtitles in your language
✅ Over 90 video tutorials for $69
✅ Hours of quality content - no filler
✅ All code examples included
✅ Industry standard practices
✅ Lifetime ownership
📜 Certificate of achievement
🤝 30 day money back guarantee



PHP Professional Toolkit

💰 Massive Saving!

All of my best PHP courses bundled into one product. Save over $100 today!




Learn Object Oriented PHP logo

Object Oriented PHP

A complete guide to Object Oriented Programming in PHP



PHP API Pro Artowor

Testing PHP

A complete guide to testing PHP applications


Git and Github logos

Git and Github

A practical guide to Git and Github



Docker and PHP Logo

Docker + PHP

A practical guide to Docker with PHP. Includes bonus material



PHP Professional Toolkit Plus

PHP Framework PRO

Essential learning for every PHP developer


Gary Clarke - Who am I?


Hello and thank you so much for checking out my work. My name is Gary Clarke and I'm a software developer with many years experience, primarily in PHP. I started creating video tutorials during lockdown in 2020 because I wanted the challenge of being able to explain complex / technical subjects to others in a way which is easy to understand and remember.

At this moment in time, my videos have been watched nearly half a million times and I intend to keep creating new and improved content and teaching more and more new people. It would be my pleasure to see you on the inside of one of my courses.


This is what people have had to say about my courses.


I do not know of anyone else that can lecture on Frameworks and has the same depth of working knowledge. Thank you! Mark Corrigan

This is the course if you want a better understanding of TDD with useful examples and code along - Edin

It's really valuable because we go through all the steps of creating an API using TDD approach. There isn't much content of such quality available at such a reasonable price, so keep up the good work - German

The course answers exactly my needs. Jad

I really enjoy how the information is presented. I'm an experienced software engineer with knowledge related to PHP frameworks and the way information is presented is very valuable to me to recap the commonalities behind the specifics of PHP frameworks. Adrian Megreanu-Maior

I like this course and it was so worth waiting for. Alexis

Great work! Eric

Excellent course. Gives me the detail I am looking for. Mark Corrigan

I can understand the clear and perfect explanations - Luis Solis

This is perfect! - Unjoined

You have a great way of explaining OOP - Locoplata

This is one of the best courses I have ever done. You have a gift for teaching. Your training has given me very valuable context for all things I knew, corrected some stuff I did incorrectly, and has taught me innumerable new things. - Mark Thijssen

Making me enjoy coding again. - Drew Hinde

Gary has deep knowledge and he is following the best practices. I have no suspicions about learning non-useful nor obsolete techniques. It is essential to have work / code discipline and he has it and kind of routing you to have the same. - Burak

Gary has a patient delivery style, and I can understand him. I also appreciate that code for the video is provided, with each video, because I like to spend time testing and changing that code to get further into it. - Karl Zipser

Well explained step by step approach - Takunda Chibanda

The way of teaching is so good with real time examples. There is also engaging activities - Lokith S

Information delivered clearly and in a well-structured way - Sim

This course is fantastic! I'm really looking forward to watching the rest of the course. Thanks a million Gary! - Michael Gibbs

Well structured and taught - Suleyman Solak

Great tutorial! - Fh Ndiritu

It's much more pleasant to follow than most other courses I have tried. - Mick Amato

Thanks for this video, been watching it for the 2nd time and I can't even feel the time goes by - Lexer Quine

I won't lie, I've watched a lot of php oop course and this is the best!! Thank you king - Yasser Latrach

PHP is making sense and I can apply what I am learning at my job - Dee

Very engaging and easy to understand the concepts - Luciano

I'm very happy with the course and the instructor. - Paulo

Gary explains OOP with PHP very clearly and is easy to understand. I think it's simply great - thanks for creating it!! - Nicolas Alexander Rau

This course is a true gem! It's the first time I watched a 3h course and felt I really understood the concepts. Thank you so much Gary! Looking forward to the full course:) - Giulia Pizzignacco

I saw all the videos of oriented object programming and they were awesome! Great content - Arius

Great stuff for OOP in PHP for beginners and great reminders for other Devs. - TomTom Shaylash

Excellent course delivered by a knowledgeable and engaging content creator. Highly recommended - Drew Hinde

I have learnt so much new information which helps me to write efficient php (oop) code. I am very thankful to Gary for providing such quality content - Ridwanullah Raufi

I'm very pleased with the way Gary explains everything. - Rob Spruyt

I'm enjoying the clear English of Gary, well spoken and succinct explanation of his code. - James

Exactly what I needed for my level of coding, I can create crud applications in PHP, but OOP is completely new to me. - Tom

Sufficiently long sections to be able to take in the information, it makes it easier to understand. Very good explanations. - Mats Akebrand

I have had an extremely positive experience with this course, so Mr Clarke had definitely earned a perfect 5 stars from me! This course has helped me to understand how OOP works SO MUCH better than I previously did. I 100% understand all of his examples. - Jeffrey Carter

Excellent course, interesting and engaging - Clive

Thank you so much! Appreciate your hard work - Paul Toma

Great work. Waiting for next videos - Alwin Augustin

Beautiful work! - Mohammed B

Great work. Thank you Sir! - Yusuf Aliya

Great video! Thanks so much - Ck

Interesting tutorial, thanks for all! - Mdazhardware

Thanks, awesome work!- Hamad Adel

Great work!- Houssem Rahrah

Thanks for your time we appreciate it!- Mamadou Aly Sy

Great!- Sergey Vasko

Nice course- Kennedy Muthui


Edin ⭐️⭐️⭐️⭐️⭐️


✅ Valuable information ✅ Helpful practice activities ✅ Clear instructions

✅ Accurate course description ✅ Engaging delivery style ✅ Knowledgeable instructor


Jack ⭐️⭐️⭐️⭐️⭐️


✅ Valuable information ✅ Helpful practice activities ✅ Clear instructions

✅ Accurate course description ✅ Engaging delivery style ✅ Knowledgeable instructor


Laurence ⭐️⭐️⭐️⭐️⭐️


✅ Valuable information ✅ Helpful practice activities ✅ Clear instructions

✅ Accurate course description ✅ Engaging delivery style ✅ Knowledgeable instructor


Bernard Chisumo⭐️⭐️⭐️⭐️⭐️


✅ Valuable information ✅ Helpful practice activities ✅ Clear instructions

✅ Accurate course description ✅ Engaging delivery style ✅ Knowledgeable instructor


Eduardo Weidman Barijan⭐️⭐️⭐️⭐️⭐️


✅ Valuable information ✅ Helpful practice activities ✅ Clear instructions

✅ Accurate course description ✅ Engaging delivery style ✅ Knowledgeable instructor


Jonathan Wood ⭐️⭐️⭐️⭐️⭐️


✅ Valuable information ✅ Helpful practice activities ✅ Clear instructions

✅ Accurate course description ✅ Engaging delivery style ✅ Knowledgeable instructor



Edin ⭐️⭐️⭐️⭐️⭐️


✅ Valuable information ✅ Helpful practice activities ✅ Clear instructions

✅ Accurate course description ✅ Engaging delivery style ✅ Knowledgeable instructor



Mr J ⭐️⭐️⭐️⭐️⭐️


✅ Valuable information ✅ Helpful practice activities ✅ Clear instructions

✅ Accurate course description ✅ Engaging delivery style ✅ Knowledgeable instructor


German⭐️⭐️⭐️⭐️⭐️


✅ Valuable information ✅ Helpful practice activities ✅ Clear instructions

✅ Accurate course description ✅ Engaging delivery style ✅ Knowledgeable instructor


Luis Solis⭐️⭐️⭐️⭐️⭐️


✅ Valuable information ✅ Helpful practice activities ✅ Clear instructions

✅ Accurate course description ✅ Engaging delivery style ✅ Knowledgeable instructor


Bichotte Aurelien⭐️⭐️⭐️⭐️⭐️


✅ Valuable information ✅ Helpful practice activities ✅ Clear instructions

✅ Accurate course description ✅ Engaging delivery style ✅ Knowledgeable instructor