Junior — Middle
Има ли класът неизменяемост, ако има отворено свойство?
sobes.tech AI
Отговор от 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.