Антон Шаманов, предлагаю ещё раз с самого начала треда, т.к. есть подозрения, что мы обсуждаем совершенно разные вещи.
Проблема: Норм ли в __get фигачить switch/case и возвращать объекты. Я написал что "норм" и привёл примеры либ (knp и свою), где так вполне делается и пока не мешало.
Вы же на скрине совершенно иной кейс используете, где всего этого нет. Как следствие и автокомплита нормального.
Adamos, а не смущает, что в аргумент "ArrayToClass" передаётся один и тот же объект всегда? Очевидно, что он там где-то внутри патчится и возвращается этот же самый объект. А потом опять передаётся и опять патчится (уже пропатченный). Ну типа не смущает, что идентификатор у объекта всегда одинаковый? var_dump об этом как бы явно пишет строкой "#59"...
> та версия phpstorm что стоит у меня отобразит в автоподстановке методы всех перечисленных классов, а не конкретно того что возвращается.
Эм... я тут по истории смотрю. Ну в общем они этот функционал добавили в PhpStorm 4.0 (судя по issue): https://youtrack.jetbrains.com/issue/WI-10028 Вы точно уверены, что у вас шторм 2010го года выпуска? =)
> и если в случае с Github/Client::api() от такой автоподстановки мало толку.
Мне казалось что тред о том насколько корректно скрывать объекты за геттерами. Я привёл в пример аналог другой библиотеки с идентичным подходом. Т.е. мы обсуждаем (надеюсь) конкретно метод "__get", а не "api".
Vladimir Krygin, а я то тут причём? о_0 я наоборот говорю, что вполне норм. А то что он нарушает open-close - это мелочи, которые в данной ситуации несущественны.
FanatPHP, не, ну в целом верно. Методом костылей и велосипедов getInstance может возвращать любую реализацию интерфейса... С другой стороны, это уже не синглтон, а фектори получается....
Вообще-то нет. Просто у вас в коде вызывается он как статик контекст. Что мешало сделать по-нормальному? ob_start([$this, 'pageAssembly']);
И если бы кто-то (не будем тыкать пальцем) включил вывод ошибок - сразу же об этом узнал бы. Но кто-то (опять опустим момент с пальцем) отрубил их все нафиг, по-этому и наслаждается проблемами)
Антон Шаманов, такие задачи уже не через докблоки делаются, а через метадату. На выходе получаем что-то такое:
https://habrastorage.org/webt/zp/dd/1p/zpdd1phq6e5...
https://habrastorage.org/webt/ua/pr/yb/uapryb0wlue...