Immutable

Yoskaldyr

"Спамер"
Партнер клуба
Какие используете либы для read-only и immutable классов?

Все существующие реализации что нашел сильно громоздкие и тормознутые (при небольших объектах и небольшом количестве get конечно работают норм, но если что-то с активным вычислением с кучей get, то производительность падает в разы)

P.S. лично я тупо использую @property-read пхпдок комменты, понятно что никакого отношения к настоящему immutable не имеет отношения, но хотя бы сторм ругается при попытке изменения.
 
Это надо решать на уровне языка (public final или public readonly).

Пока все плохо - пишу код вида

PHP:
class ValueObject
{
     /** @var string */
     private $foo;

     public function foo(): string
     {
          return $this->foo;
     }
}
 
А нет случайно каких-то бинарных расширений для чего-то подобного? Ну типа юзать какую-то обертку, но если вдруг проблемы или по памяти или производительности чтобы легко переключиться на более производительный вариант
 
Да какая-то надуманная проблема, если честно.

Написал конструктор с аргументами, тыкнул initialize fields, тыкнул generate getters, все.
 
Да какая-то надуманная проблема, если честно.

Написал конструктор с аргументами, тыкнул initialize fields, тыкнул generate getters, все.
Вот мне нужно добавить 3-4 события, и я начинаю как робот повторять одни и те же действия. Потом не дай бог понадобится добавить переменную в список параметров конструктора не в середину и чтобы не сойти с ума, приходится менять порядок в коде конструктора (присваивание), потом в списке переменных класса. Потом перевести курсор между нужными гетерами и только там сгенерировать новый.

Мне кажется, 80% моего написания кода уходит вот на этот лютый треш.

Я бы многое отдал за final/read-only properties.
 
Да, есть такое. Я еще часто пишу на typescript-е, когда возвращаюсь на PHP, это, конечно, особенно все бесит.

Но всякие варианты с __get-магией все равно намного хуже. Лучше уж так, пока на уровне языка не решат.

Ну, и еще меня сильно удивляют люди, которые это все вообще ручками делают. Але, phpstorm-то зачем покупали?
 
Сверху