ПХП

Модули в Изнанке

В описании к Изнанке я указал функцию runModule(). Многим оказалось непонятно что за модули, зачем это всё и почему бы не использовать ООП.

С ООП всё просто — я не люблю его. Объекты способны самую простую задачу превратить в долгие рассуждения и мучения. Несомненно, объекты имеют смысл (в той же Изнанке был объект $view), но их стоит использовать только тогда, когда они действительно нужны. Большинство задач гораздо проще решить с помощью процедур. Повсеместное применение ООП — дань моде.

ООП в ПХП вообще отдельная тема. Объекты жадно поедают память и бьют по производительности.

Но тогда возникает другая проблема: как структурировать код? Мне удобно разбивать код на модули и вызывать их тогда, когда они нужны. Модуль в Изнанке — ПХП–файл, который выполняет задачу, а не просто набор функций.

Модули вызываю из роутера. Для отображения главной страницы этого блога используется такой код:

addRoute('/blog/' => function(){
  runModule('blog/notes');
});

Этот код запускает модуль, который сам знает что ему делать. Модуль notes вызывает модуль для работы с кэшем, берёт заметки, выставляет шаблон.

При таком подходе вносить точечные изменения становится легко и процесс написания кода приносит удовольствие.

10 августа, 19:22   ПХП   разработка
Красивые шаблоны

В заметке о релизе Изнанки 2.3 я написал про отступы в шаблонах. Хотелось бы раскрыть эту тему целиком.

Например, есть вот такой шаблон:

Раньше Изнанка портила отступы при отрисовке.

Оказалось, что после закрывающий тег ПХП удаляет перенос строки после себя. Лечится это добавлением пробела после тега. В Изнанке 2.3 я автоматизировал процесс простым алгоритмом: если в строке есть ХТМЛ помимо ПХП или ПХП выводит что–либо — экранируем пробелом. На выходе останутся пустые строки там, где был только ПХП код без вывода, но это исправляется через array_filter().

Вот так Изнанка отрисует шаблон сейчас:

29 июня, 5:40   ПХП   Изнанка   хтмл