"Перегрузка" конструктора класса в php

Работая над своим проектом, я случайно придумал интересную способ для имитации перегрузки конструктора в php.

"Перегрузка" конструктора класса в 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().

Вот, например, некто Сергей Мухин предлагает такой способ:

"Перегрузка" конструктора класса в php PHP, Программирование, Длиннопост

Пример с сайта https://sergeymukhin.com/blog/peregruzka-v-php

Да, согласен. Если делать через магические методы, то функционал похож на перегрузку с других языков программирования. Однако, в этом случае теряется типизация аргументов, которая для меня критична.

На этом все. А что вы думаете про "мой" способ перегрузки конструктора класса? Какой способ используете вы?

Жду всех заинтересованных внизу в комментариях.