PHP for the Web·PHP from first script to a working app

Classes and namespaces

Model data with classes, constructor promotion, readonly properties and namespaces.

Beginner 15 min read Lesson 9 of 300 Challenge included
What you will be able to do
  • Promote constructor arguments into properties.
  • Use readonly for values that must not change.
  • Keep classes small and focused.
  • Match namespaces to folder structure for autoloading.

In plain English

Classes group state and behaviour, and namespaces stop names from colliding as a project grows. Constructor promotion removes repetitive assignment, while readonly properties make small value objects trustworthy.

Lesson.phpPHP
<?php
declare(strict_types=1);

namespace App\Content;

final class Lesson
{
    public function __construct(
        public readonly string $slug,
        public readonly string $title,
        public readonly int $minutes,
    ) {}

    public function isLong(): bool
    {
        return $this->minutes >= 15;
    }
}

$lesson = new Lesson('css-grid', 'CSS Grid', 18);
echo $lesson->isLong() ? 'Long' : 'Short';
Your turn

Create a value object

Medium

Create a readonly Email class that validates the address in its constructor and exposes value().

PHP · starter
final class Email {}
Check your understanding before moving on.
Knowledge checkQuestion 1

What does constructor promotion do?

Select an answer to continue
Study tools

Make it yours.

Keep a private note for this lesson, then turn the key ideas into flashcards you can revisit.

Sign in to save notes and flashcards.Both are private to your account and stay with your progress.
Sign in
Finished reading?

Lock in what you just learned.

Mark this lesson complete to save your place and move one step closer to the certificate.

Next: Build a guestbook
Lesson 9 of 300 · 0% of course