Expected Learning

00 / PHP

Learn Laravel, Eloquent and the databasegraded by the real tools

PHP is drafted: the full syllabus is designed and the track shape is set, but no lesson has shipped yet - see what's planned before you wait for it.

* php -- assert DRAFTED
test output
expected: Expected Learning for PHP actual: null FAILED - on the roadmap, not the todo list.
FAILED on the roadmap, not the todo list.
200 lessons
0 free forever
10 tracks
DRAFTED status

01 / what grades you

Grading runs the real tools the job actually uses, in the copy of VS Code you already have open - not a simulated sandbox and not a recording.

When a lesson says PASSED, that verdict came from the real debugger, the real test runner, or a real service running on your machine.

02 / the free tier

PHP is drafted

There is no free tier to try yet - PHP has not shipped a lesson. 200 lessons across 10 tracks are planned; the syllabus below is the plan of record for what ships.

03 / syllabus

200 lessons across 10 tracks

Debugging with Xdebug

28 lessons

Your first breakpoint/Stepping through code/Reading the call stack/Inspecting variables/Conditional breakpoints/Watch expressions/Stepping into vendor/Exception breakpoints/The request lifecycle, live/Why var_dump is not debugging/The null relationship/The N+1 caught live/Debugging a Blade view/Debugging validation/Debugging a queued job/Debugging an artisan command/Middleware order surprises/The Eloquent lazy-load trap/Tinker as a live REPL/dump-server and ray/Remote attach into Sail/Profiling the slow endpoint/The race in the queue/Logpoints without editing code/Debugging an outbound API call/The vanishing session/A stack trace that lies/Capstone: fix a bug you have never seen

PHP language

30 lessons

Values and types/Strings properly/Arrays: list and map in one/The null-coalescing family/Functions/Named arguments/Closures and arrow functions/First-class callable syntax/References, honestly/Classes and objects/Constructor promotion/readonly properties/Interfaces/Traits/Abstract classes/static and self/Enums/match over switch/Namespaces/PSR-4 autoloading/Exceptions/Custom exception types/Generators/Attributes/Type declarations/declare(strict_types=1)/DateTimeImmutable/Regex in PHP/The standard library's sharp edges/Capstone

Git 22 lessons

Repo anatomy/The three areas/Commits done well/Ignoring the right things/Branching/Two kinds of merge/The conflict/Branch lifecycle/Amend/Rebase onto a moved main/Squash and fixup/Reword, reorder, drop/Cherry-pick and revert/Reflog, the undo of undos/Reset: soft, mixed, hard/Stash/Bisect/Remotes: clone, fetch, pull, push/Pull with rebase/Force with lease, and tags/The feature workflow/Capstone: inherit the mess

Testing 14 lessons

The first test (Pest)/Feature vs unit/The RefreshDatabase trait/Factories in tests/Testing HTTP endpoints/Asserting JSON structure/Http::fake for external APIs/Mocking and spies/Testing queued jobs/Testing validation rules/Database assertions/Dusk: browser end-to-end/What a good test proves/Capstone

Composer and tooling 11 lessons

Composer: the daily driver/Autoloading explained/Semver constraints/composer.lock, and why/Composer scripts/The PSR standards that matter/PHP-CS-Fixer/PHPStan: static analysis from zero/Larastan for Laravel/Raising the level safely/Tooling in CI

Laravel foundations 18 lessons

Routing/Route model binding/Controllers/Form requests in/Responses out/Blade basics/Blade components/The service container/Service providers/Config and env/artisan/Writing a make command/The service layer/Dependency injection done right/Facades, honestly/Collections/The helpers worth knowing/Capstone

Eloquent and the database 20 lessons

Migrations/Schema design/Models/Mass assignment and guarding/The query builder/Eloquent basics/hasMany and belongsTo/belongsToMany/Polymorphic relations/The N+1 problem, named/Eager loading that fixes it/Factories/Seeders/Mutators and casts/Query scopes/Soft deletes/Transactions/Testing against the database/Raw SQL when you must/Capstone

SQL 30 lessons

The server and your first query/Tables and types/First inserts/SELECT and WHERE/Order, limit, distinct/Aggregates/HAVING/CASE and conditional aggregation/INNER JOIN/LEFT JOIN and the NULL side/The fan-out trap/Self-join/Anti-joins and the NOT IN landmine/UPDATE, DELETE, RETURNING/Constraints/UPSERT/NULL three-valued logic/Transactions/SQL injection/Subqueries and CTEs/Set operations/Dates and strings/Window functions/Views/jsonb/Indexes and EXPLAIN/Fix the slow query/Recursive CTEs/Schema design/Capstone: the wrong report

HTTP and APIs 18 lessons

Form request validation/API resources/Resource collections/Sanctum token auth/Middleware you write/Rate limiting/File uploads/Pagination/Error handling and JSON responses/Events and listeners/Jobs and queues/Queued work off the request/The scheduler/Notifications/Mail/The HTTP client/Broadcasting basics/Capstone

Security and authorization 9 lessons

Mass assignment as a vulnerability/SQL injection, and why Eloquent saves you/XSS in Blade: escaped vs raw/CSRF and the token/Authentication vs authorization/Gates/Policies/Password hashing with Hash::/Secrets, .env, and what never ships

04 / how it grades you

step 01

Do the work

Open the lesson in VS Code and write the fix, the query, or the test - in your own editor, with your own tools.

step 02

The real tool checks it

The debugger, the test runner, or the real service your code talks to decides pass or fail - not a string match on your keystrokes.

step 03

Hints, then the solution

Stuck lessons escalate through hints before the reference solution unlocks - spoilers are earned, not browsable.

05 / your machine

What to expect on your machine

By track, per operating system

By track, per operating system
TrackWindowsmacOSLinux
Full curriculum not yet not yet not yet
PHP has not shipped a lesson, so there is nothing to measure yet. This matrix fills in, verified against CI, once lessons exist and the gate runs - and not before.

measuring, 2026-08-30

TO BE VERIFIED Windows, macOS, Linux

Per-operating-system expectations are published here once the CI gate has run - measured, with run ids, the way the shipped products do it. Nothing is claimed before then.

06 / receipts

Receipts

Receipts land when this ships. TESTED first, receipts with it - that is the order.