Theory
Object-Oriented PHP
PHP 8.3.8
Advanced

Object-Oriented PHP

Topic 11 of 13
PHP
<?php
// Constructor promotion (PHP 8) โ€” declares AND assigns in one shot
class User {
    public function __construct(
        private readonly int    $id,
        private          string $name,
        private          string $role = 'user'
    ) {}

    public function getName(): string {
        return $this->name;
    }
    public function isAdmin(): bool {
        return $this->role === 'admin';
    }
}

// Interface
interface Authenticatable {
    public function login(string $pass): bool;
}

// Trait (reusable mixin)
trait HasTimestamps {
    public function createdAt(): string {
        return date('Y-m-d H:i:s');
    }
}

// Enum (PHP 8.1)
enum Status: string {
    case Active   = 'active';
    case Inactive = 'inactive';
}
echo Status::Active->value;  // 'active'