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'