@Shimpanze

Как создать собственный, простой аналог языковой конструкции (вроде endwhile;)?

Добрый день!

Скажите, пожалуйста, можно ли в PHP, создать простой аналог языковой конструкции? Что то вроде endwhile;?

Допустим, в коде пишу так:

end_my_function;

...и после обработки на выходе получаю:

endwhile;
wp_reset_query();
}


P.S. Интересует, можно ли создать такую конструкцию, чтобы вызывать БЕЗ круглых скобок?
  • Вопрос задан
  • 202 просмотра
Решения вопроса 2
SerafimArts
@SerafimArts
Senior Notepad Reader
Конечно можно и для этого есть несколько вариантов решения:
1) Написать расширение, которое будет внедряться и собираться в требуемый опкод. Подробнее можно почитать на сайте пыха про Zend и его инструкции. Увы, данной информацией я не владею, так что и помочь не могу.

2) Через хук на автолоадер (например композера) перехватывать подключаемые файлы, рестримить их на свой протокол, затем написать LL(k) парсер с (E)BNF или воспользоваться готовыми (например AST парсер от Никиты), стоить дерево, находить нужные вставки внутри и заменять на свои, кешируя результирующие файлы (можно обойтись и без AST, простой заменой потока токенов, но такое решение будет менее надёжным).

Но я подозреваю, что оно не нужно, верно? По-этому есть третий вариант:
3) Т.к. я подозреваю, что данный вопрос имеет смысл для вьюх, то надо просто добавить своё правило/расширение в шаблонизатор, которым вы пользуетесь: Твига, Блейда или чего-нибудь ещё (т.к. вы не указали что именно используете).

Больше вариантов, насколько я помню - нет.
Ответ написан
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Позвольте уточнить, чего вы пытаетесь добиться?

Рискну предположить, что вас задалбывает часто писать одно и то же (в данном случае - кастомный Loop в WordPress). Это можно решить 2мя методами:

- написать свой loop builder, которому только параметры передать, а он остальное соберет сам.
- настроить live templates (это в PhpStorm, в других IDE есть аналоги) и использовать их. Например у меня в PhpStorm много таких live templates, я к примеру пишу ??loop, нажимаю tab и получаю сразу весь код цикла.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
от 300 000 до 500 000 ₽
06 мая 2024, в 14:54
1000 руб./за проект
06 мая 2024, в 14:53
45000 руб./за проект
06 мая 2024, в 14:31
200000 руб./за проект