Микрофреймворк Joke на PHP23.01.2026, 10:28. Показов 1833. Ответов 33
Ради прокачки своих навыков и участия в челендже решил написать фреймворк. У меня нет цели конкурировать с существующими, тем не менее планирую разрабатывать так, что в рамках реализуемого функционала фреймворк был вполне пригоден для применения.
Буду благодарен за мнение, критику, код-ревью.... Суть челенджа В течении года создать фреймворк и создать с его использованием движок форума. Так же естественно я не планирую создавать навороченный форумный дивжок - просто достаточный для демонстрации и не более (на мой взгляд вообще форумные движки не перспективна задача "в приницпе" )Фреймворк Есть релиз 1.1. Базовый функционал работоспособен. Реализовано:
GitHub Дока Для старта с минимальным набором
Записал видео где показал как ссозздать простейшее приложение Списка задач. видео созданное приложение на github Шаблонизатор Сейчас работаю над шаблонизатором. Ставиться будет отдельным пакетом. Для первых проб реализовал <j-echo>, <j-if></j-if>, <j-each/>. Есть специальный атрибут static, если его добавлять - перед компиляцией в PHP код, эти узлы AST дерева рендеряться в HTML. Сейчас остановился на внедрением в шаблонизатор DI контейнера, что позволит и регистрировать свои теги, заменять рендер и компиляцию существующих, или вообще заменить, например, компилятор ![]() Код шаблонизатора GitHub
1
|
||||||
| 23.01.2026, 10:28 | |
|
Ответы с готовыми решениями:
33
Нужны добровольцы PHP-кодеры PHP это не сложно, ну все же хотелось бы знать! Собираю группу программистов знающих PHP & MySQL, для создания новой online игры |
|
Заблокирован
|
|
| 26.01.2026, 11:43 | |
|
0
|
|
|
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
|
|
| 26.01.2026, 12:35 | |
|
Labusa, это как?
0
|
|
|
Заблокирован
|
||
| 26.01.2026, 13:11 | ||
|
Ооо... вспомнил. На Валтберес постоянно использую поиск, но лучше бы этот поиск не был полнотекстовым. Иногда такую ерунду выдает. Пишу запрос "ноутбуки без вентиляторов" и он мне в ответе кучу вентиляторов и ни одного ноутбука. Пора им уже ИИ внедрять в свой поиск, что бы ерунду не показывал.
0
|
||
|
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
|
|
| 26.01.2026, 13:19 | |
|
Labusa, интересно) Чем полнотекстовый поиск таким выделяется, что положить сервер может? Ты что-то свое подразумеваешь под таким поиском?
0
|
|
|
Заблокирован
|
|
| 26.01.2026, 13:27 | |
|
0
|
|
|
95 / 79 / 10
Регистрация: 22.12.2024
Сообщений: 552
|
||
| 26.01.2026, 13:42 | ||
Не знаю как сейчас, давно выпал из орбиты PHP фреймворков, но раньше хорошим тоном было писать только само ядро, остальное подтягивать через зависимости скелетона (там какой-то PSR стандарт на это), с возможностью дать юзеру сменить эти предустановки. Даже с целью обучения - лучше учиться собирать готовое из компонентов, чем писать свое.Я бы вообще взял готовый QueryBuilder, подключил через драйвер и поверх него натянул разные фреймворко-специфические штучки, которые помогают строить чейны. Это же касается шаблонизатора на самом деле.
0
|
||
|
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
|
|
| 26.01.2026, 13:52 | |
|
Labusa, и?
0
|
|
|
95 / 79 / 10
Регистрация: 22.12.2024
Сообщений: 552
|
|
| 26.01.2026, 14:05 | |
|
Labusa, комаров бояться - в лес не ходить. Но лучше купить накомарник.
Есть много способов защиты от бото-атак. В Ларавел этим занимается модуль throttle например, ограничивающий частоту запросов.
1
|
|
| 26.01.2026, 16:06 [ТС] | ||||||
Я сам на форумах предпочитаю пользоваться "локальным" поиском. Да когда в поиске нашел и пришел на форум это одно, когда я на форуме - я не хочу ходить в поиск. По условию челенджа стороннее нельзя использовать, "обычный" через like слишком тупо. Ну, а если представить гепотетически что этот форум пойдет прям в реальный прод то там естественно будет интеграция, например, со сфинксом (ну точнее некий интерфейс по которому можно завести нормальный поиск)![]() (хотя уже сейчас подумываю все же подключить php cs fixer, и php stan - все же это не часть кода разработки и "пользователям" оно не тянется.А так, у меня не будет жестких привязок, я описываю интерфейсами все что можно заменить, т.е. потенциально через адаптор можно подключать. готовое Я так то далеко не первый год в веб разработке, а вообще в разработке и того больше . Лично мне интересно просто попробовать все это написать для себя (ну кто то играет на гитаре, кто то крестиком вышивает ). Конечно и некоторые пробелы в моих знаниях закрывает. Ну с тем же AST деревом разобрался.. Согласитесь сколько бы я на ларавел не собирал проектов - это бы в ряд ли копнул.![]() Добавлено через 4 минуты Но о PSR я конечно тоже подумываю. Тут только тоже вопрос не совсем простой. Ведь не все соблюдают их, и кто то даже отказывается. Есть и спорные моменты. В общем возможно буду об этом думать позже
0
|
||||||
| 29.04.2026, 10:48 [ТС] | |
|
Выпустил новый релиз.
Решил попробовать новую концепцию к формированию ответа, когда речь идет про HTML ответ. Т.е. Response собирает полноценную страницу непосредственно перед отправкой. Не путать с шаблонизатором - шаблонизатор будет взаимодействовать с эти объектом ответа. Т.е. ответ будет по отдельности содержать/накапливать, например: основной контент страницы, список подключаемых файлов (css, js) список метатегов. И уже в конце собирать страницу. При этом так к ссылкам на ресурсы (те что из проекта) будет добавляться параметр с хешем, чтобы учитывать кеширование браузера, а так же обеспечивать что один и тот же файл не будет подключаться дважды. Как пример - можно будет вынести подключение счетчиков в мидлвар..... В общем поэкспериментирую с этим Подробнее в доке Так же кому интересно есть видео про создание мидлвары для работы с CORS - буду благодарен фидбеку про реализации. Код на гитхабе, но кому интереснее по видео: VK Youtube
2
|
|
|
95 / 79 / 10
Регистрация: 22.12.2024
Сообщений: 552
|
||||||
| 29.04.2026, 21:32 | ||||||
|
А внутри body не планируете снос границы php и html+js для конечного прогера? Чтобы PHP фреймворк выходил за пределы сервера (виртуально) и захватывал и управление браузером?
1
|
||||||
|
95 / 79 / 10
Регистрация: 22.12.2024
Сообщений: 552
|
||
| 29.04.2026, 21:47 | ||
|
Там вообще интересный опыт открывается для новичков. Это старики знают, как склеены все эти слои и как пробросить данные туда-сюда. А новичок хочет, чтобы у него перед глазами был простой бесшовный код на одном языке, а юзер ввел что-то в инпут и оно как-то само и страницу перерисовало и в базу на сервер сохранило если надо. Много либ встречал, которые идут в этом бесшовном направлении. Но "нормальной" - нет, везде что-то не то или не так.
1
|
||
| 31.08.2026, 08:10 [ТС] | |
|
тем временем продолжаю свои изыскания.
Уже выпустил релиз 1.5. Но последние два месяца раблал над моулем шаблонизатора. Интересная задача с построением AST дерева. Успел несколько вариантов перебрать прежде чем остановился на окончательном и в итоге выпустил первый релиз. Док в наличии Из основного: Поддерживаются два синтаксиса {{переменная}} (для вывода значения переменной) и {% директива [...параметры] %} - различные функциональные директивы. Можно, если потребуется, добавить и свой вариант. Поддерживается точечная нотация для доступа к значениям на любой глубине массивов. Сейчас реализованы базовые директивы: например if...elseif..else, foreach, layout (для указания каркаса в котором будет выведен окруженный блок шаблона), include (для подключения подключаемых файлов стилей и скриптов).... а так же component - подключение компонента. Директивы можно создавать и регистрировать свои. Компонент это блок обладающий своим функционалом. Можно разрабатывать свои компоненты (из коробки их нет, это все же уже про конкретику, а шаблонизатор дает механизм) Коротко постарался показать работу с шаблонизатором (включая создание своей директивы и своего компонента) в видео ВК и youtube
2
|
|
| 31.08.2026, 08:10 | |
|
Пишу программу для написания приложений под Windows на HTML, CSS, PHP, JS Онлайт чат - изучение JavaScript и PHP Совместное Обучение HTML, CSS, PHP Программистам php: Нуждаюсь в команде энтузиастов вашего дела программирование на php DevelStudio Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|