git clone https://github.com/Voral/joke-minimal my-appcd my-appdocker compose up -d
Вот пример на котором я "игрался" при разработке на гитаб
/** * @var Router $router */$router->get('/', fn() => <<<HTML<ul> <li><a href="/name/Alex">Hi Alex</a> Текстовый ответ. Имя можно менять</li></ul>HTML);$router->get('/name/{name:slug}', fn(string $name) => 'Hi ' . $name, 'hiName');$router->get('/json/{name:slug}', fn(string $name) => ['fio' => $name]);$route = $router->get('/name-filtered/{name:slug}', fn(string $name) => 'Hi ' . $name)->addGroup('filtered');$router->get('/invoke/{prop}', InvokeController::class);$router->get('/shop', [SingleController::class, 'index']);$router->get('/shop/info', SingleController::info(...));$router->get('/shop/infoNew', SingleController::class . '::info');$router->get('/shop/{filter}', [SingleController::class, 'find']);$router->get( '/csrf', fn(Vasoft\Joke\Core\Request\HttpRequest $request) => [ 'csrf' => $request->session->get( CsrfMiddleware::CSRF_TOKEN_NAME ) ]);$router->delete( '/csrf', fn(Vasoft\Joke\Core\Request\HttpRequest $request) => [ 'csrf' => $request->session->unset( CsrfMiddleware::CSRF_TOKEN_NAME ) ]);$routeHandler = fn(Vasoft\Joke\Core\Request\HttpRequest $request) => [ 'id' => spl_object_id($request), 'get' => $request->get->getAll(), 'post' => $request->post->getAll(), 'files' => $request->files->getAll(), 'json' => $request->json,];$router->post('/queries', $routeHandler);$router->put('/queries', $routeHandler);$router->patch('/queries', $routeHandler);$router->head('/queries', $routeHandler);$router->get('/{*}', static fn(string $path) => new HtmlResponse() ->setStatus(ResponseStatus::NOT_FOUND) ->setBody("Запрошен несуществующий путь: {$path}"));
Хм. я планировал про докер с готовым приложением :) ок, разберусь и сделаю "для разработки"
У меня у самого как то с докером не сложилось в практике: большинство проектов без докера, а брать на себя роль и сисадмина, к тому же свои коррективы вносит то, что проекты в основном на Битрикс (а там контент менеджер через интерфейс может менять файлы).... а так у меня установлено с 14 года апач и bind9 в которые я конфиги просто скопировал с предыдущего компа... и все работает :) Пробовал ставить себе докер - у меня начались какие то непонятки : браузеры на любом сайте постоянно стали сбрасывать соединение. :) в общем в этом плане я не продвинутый :) но постараюсь разобраться. может у той же лары подгляжу - сделаю
Вообще я хотел изначально сделать %%...%% (у меня моя CMS так работала когда то). тут пошел из идеи: если тег не отработан, то он останется на странице и не будет виден. Правда пока писал этот текст осознал - у меня в этом случае бросается исключение. Подумаю. в целом "переключить" совсем не проблема.
ужис :) сейчас закину на ютуб
Итак вторая пятница (далее через две недели "отчеты")
Фреймворк
Выпустил первый релиз. Базовый функционал (естественно он очень минимальный) работоспособен. Вполне можно собрать какой то внутренний микросервис. Реализовано:
Так же начата разработка следующей версии: функционал, в основном, определяется разрабатываемым параллельно шаблонизатором. Тут сейчас на очереди задача регистрации модулей, т.е. чтобы не приходилось при подключении в проект шаблонизатора регистрировать все его сервисы и потребности, а сделать некие провайдеры упрощающие процесс
GitHub Дока
Так же сделал скелетон, для старта с минимальным набором (в README описано)
composer create-project voral/joke-minimal my-app
Видео
Видео записал не в формате "показать что у меня внутри" тут, если у кого то будут вопросы, готов ответить, а выдавливать из себя... хз... (я вообще наверно первый раз лет за 30 столько говорил без перерыва :) )
Записал видео с демонстрацией создания с помощью фреймворка простейшего приложения Списка задач. видео созданное приложение на github
Шаблонизатор
Основная разработка сейчас здесь. Реализованы сейчас базовые теги <j-echo>, <j-if></j-if>, <j-each/> на их базе отработал построение AST дерева, рендер в HTML. Но осознал, что выполнять сразу полный рендер HTML это не правильно для динамических сайтов: по этому будут следующие шаги: лексер - парсер - рендер тегов отмеченных атрибутом static (сейчас на гитхабе версия с "j-static", но у атрибута префикс планирую убрать) - компиляция в PHP код. Т.е. на первом хите будет и построение AST дерева и компиляция php кода. На последующих (пока не сработают правила обновления кода) будет только выполнение PHP (естественно я пока опускаю, что будут и другие уровни кеширования).
Сейчас работаю над внедрением в шаблонизатор DI контейнера, что позволит и регистрировать свои теги и заменять те, что идут из коробки. В общем то можно будет заменить не только обработчики тега, но и например компилятор штатный заменить на компилятор который будет компилировать в любой другой ЯП, например в код на питоне :)
Репа шаблонизатора GitHub
Как это можно применить - не придумал)))
Прикольно, интересно было бы узнать нет ли "родственных" душ в рамках форума :)
PS. А у меня тем временем сегодня первый релиз (и фреймворка и скелетона для простого старта разработки на нем). постараюсь к пятнице видео запилить. Начинается у меня череда ДР: отец, сын и я - друг за другом, "скорость" подспадет
100%го рецепта нет. Для примера ОЧЕНЬ частая причина для альцгеймера - некачественное спиртное. Т.е. вполне себе так есть шанс выпить - и все. И тут речь не конкретной паленке покупаемой с рук в подворотне.....
А далее все как всегда: спорт, питание, упражнения для мозга.