«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2018/06/04 11:26:39  №1202572 1
В общем такая штука, как бы мне в шаблонах тайпхинтить?
Сейчас юзается шаблонизатор Plates, в целом неплохо.
Но в шаблонах там контекст $this и все переменные шаблона в итоге без тайпхинтов.
Объекты из базы грузятся у меня сейчас тупо как ассоциативные массивы так что хинтить там и нечего как-бы, но я хочу уйти от этого в сторону полноценных объектов для сущностей, но тогда код в шаблонизаторе будет еще хуже выглядеть.
Т.е. если у меня НАПРИМЕР $post['content'] не хинтится ну и ладно, а если будет $post->GetContent() то будет сверху еще и подсветка IDE что типо че за херню я придумал вызывать методы необъявленной переменной...
Если бы можно было как-то обозначить что вот эта переменная отсюда и далее является объектом класса такого-то.
Например, сделать статический класс валидатор сущностей, в шаблоне вызываем его так:
$post = Post::Validate( $post );
и в итоге получаем захинченую сущность, заодно там внутри проверяем правильно ли шаблону передали сущности.
Но это по идее противоречит в какой то степени парадигме MCV, получается вьюшка дублирует кусочек фукнционала модели...
Ответы: >>1202583
Аноним 2018/06/04 11:58:04  №1202583 2
>>1202572

Во-первых, из шаблона нельзя вызывать валидатор. Так как задача вью - отображать данные, а не валидировать их.

Во-вторых, для IDE используй аннотацию @var SomeClass $someVar или как-то так в комментарии с 2 звездочками.

Менять архитектуру кода ради IDE неправильно.
Ответы: >>1202587
Аноним 2018/06/04 12:08:18  №1202587 3
>>1202583
Ну я понимаю что неправильно, поэтому и спрашиваю.
Такая аннотация - как раз то что нужно, большое спасибо!
Стоить внимательно изучить стандартные виды аннотаций, не думал что там есть что-то кроме как хинтов для классов.