Назад к вопросам
Junior — Middle
89
Обладает ли класс иммутабельностью, если у него есть открытое свойство?
Ответ от нейросети
sobes.tech AI
Если у класса есть открытое (public) свойство, то он не считается иммутабельным, потому что внешние объекты могут напрямую изменить значение этого свойства после создания объекта.
Иммутабельность означает, что состояние объекта нельзя изменить после его создания. Для этого все свойства обычно делают приватными или защищёнными, а изменения возможны только через методы, которые возвращают новый объект с изменённым состоянием.
Пример иммутабельного класса в PHP:
class ImmutableUser {
private string $name;
public function __construct(string $name) {
$this->name = $name;
}
public function getName(): string {
return $this->name;
}
public function withName(string $name): self {
return new self($name);
}
}
Здесь свойство $name закрыто, и изменить его можно только создав новый объект через метод withName.