class User {
public string $name; // доступен отовсюду
protected int $age; // доступен в классе и наследниках
private string $password; // доступен только в этом классе
public function getName(): string { return $this->name; }
protected function validate(): bool { /* ... */ }
private function hashPassword(): string { /* ... */ }
}С PHP 8.4 появилась асимметричная видимость:
class User {
public private(set) string $name; // чтение public, запись private
}Рекомендация: делайте все private по умолчанию, расширяя видимость по необходимости.