Classes and namespaces
Model data with classes, constructor promotion, readonly properties and namespaces.
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.
<?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
MediumCreate a value object
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 inFinished reading?
Lock in what you just learned.
0%
Mark this lesson complete to save your place and move one step closer to the certificate.