levelmax

Welcome back.

SAVE SLOT 1LOCAL PROGRESS
World 0 · Tutorial · Level 0.0
Welcome
PHP 8.342 levels
Continue
LEVELS CLEARED
0 / 42
WORLDS CLEARED
0 / 7
YOUR NEXT STEP
  • Keep your streak honestEvery completion is saved only in this browser until accounts arrive.

PHPStan to Max

Everything is open. The order is only a suggestion.
World 04 LEVELS

Tutorial

  1. 0.0 Welcome FREE
  2. 0.1 The sandbox FREE
  3. 0.2 Reading PHPStan output FREE
  4. 0.3 The levels, explained FREE
World 17 LEVELS

Strict Types

  1. 1.1 declare(strict_types=1) FREE
  2. 1.2 Scalar and return types FREE
  3. 1.3 never, void, and static FREE
  4. 1.4 Nullable versus union FREE
  5. 1.5 Readonly properties FREE
  6. 1.6 Enums FREE
  7. 1.B Boss: tighten a checkout service FREE
World 27 LEVELS

Honest Types

  1. 2.1 array is a shrug
  2. 2.2 Refined scalar types
  3. 2.3 Array shapes: say what's in the box
  4. 2.4 Type aliases: name the contract
  5. 2.5 Generics with @template
  6. 2.6 Narrowing and assertions
  7. 2.B Boss: typed repository
World 36 LEVELS

PHPStan to Max

  1. 3.1 Living with a baseline
  2. 3.2 mixed, the final enemy
  3. 3.3 Extensions and framework awareness
  4. 3.4 Strict rules and bleeding edge
  5. 3.5 Writing a custom rule
  6. 3.B Boss: take it to max
World 46 LEVELS

Testing Properly

  1. 4.1 What's worth testing
  2. 4.2 Data providers
  3. 4.3 Fakes over mocks
  4. 4.4 Time, randomness and I/O
  5. 4.5 Mutation testing
  6. 4.B Boss: test a legacy service
World 56 LEVELS

Explicit Design

  1. 5.1 Value objects
  2. 5.2 Money
  3. 5.3 Immutable all the way down
  4. 5.4 Dependency injection without magic
  5. 5.5 Small interfaces
  6. 5.B Boss: a returns desk
World 66 LEVELS

Errors & Edges

  1. 6.1 Exceptions with names
  2. 6.2 Never swallow
  3. 6.3 Failure in the signature
  4. 6.4 Validation isn't exceptional
  5. 6.5 Leave it as you found it
  6. 6.B Boss: a supplier price import