"Перегрузка" конструктора класса в php
Работая над своим проектом, я случайно придумал интересную способ для имитации перегрузки конструктора в php.
Пример использования "перегрузки" конструктора
Здесь родной конструктор класса объявлен приватным, чтобы нельзя было создавать экземпляр по умолчанию. Вместо него указаны два метода:
static public function constructor1(Ip $ip, HttpRefererId $hrId) : self;
static public function constructor2(string $ip, string $hrId) : self;
Я просто получаю наслаждение от такого способа создания экземпляра, так как аргументы объявлены явно и с нужными мне типами.
Ну хорошо. А что по этому поводу нам скажет интернет? Залез я туда и, собственно, особо ничего и не нашел. Просмотрел десяток сайтов. В основном везде пытаются реализовать перегрузку через магические методы __call, __set() и __get() или функцию func_get_args().
Вот, например, некто Сергей Мухин предлагает такой способ:
Пример с сайта https://sergeymukhin.com/blog/peregruzka-v-php
Да, согласен. Если делать через магические методы, то функционал похож на перегрузку с других языков программирования. Однако, в этом случае теряется типизация аргументов, которая для меня критична.
На этом все. А что вы думаете про "мой" способ перегрузки конструктора класса? Какой способ используете вы?
Жду всех заинтересованных внизу в комментариях.