Я так понимаю, ты хочешь без composer (это зря - усложняешь только вопросы обновления, если в простом варианте хочешь проект тестить). По этому вот размести этот код в файле vendor/autoload.php
<?php spl_autoload_register(function ($class) { $prefix = 'Vasoft\\Joke\\'; $baseDir = __DIR__ . '/../src/'; $len = strlen($prefix); if (!str_starts_with($class, $prefix)) { return; } $relativeClass = substr($class, $len); $file = $baseDir . str_replace('\\', DIRECTORY_SEPARATOR, $relativeClass) . '.php'; if (file_exists($file)) { require $file; }});
Далее необязательно настраивать опенсервер: можно просто в корне проекта php -S localhost:8000 -t public/ И далее два роута сейчас работают (я версию на github обновил) : http://localhost:8000 (ну или у тебя судя по всему http://joke.loc ) и http://joke.loc/name/alex (http://localhost:8000/name/alex) имя можно подставлять любое. Роуты можно понастраивать в tests/Fixtures/routes/web.php - там все понятно должно быть... А там на следующей недели постараюсь доку выложить по этому этапу и видео как пользоваться как фреймвоком
Отправная точка в Application. упрощено загружается конфиги роутов (из того файла что я выше сказал), подбирается согласно правилам нужный и запускается соответсвующий функционал
Я наоборот, критику очень даже приветствую. За критику моего проекта буду благодарен. :) (конечно же критика вменяемая, а не из серии "все Г... потому что я так сказал")
Давай ка договоримся без домыслов. Я могу ответить за любую строчку своего кода. Еще раз уточню, мне этот проект интересен именно тем, что я сам пишу. Тратить время на генерацию? Нахрен оно мне уперлось. Уверяю мне важнее, что о моей квалификации думают мои заказчики и коллеги.
Что значит открывался "public/index.php"? Там же в readme написано. Если ты настраиваешь веб сервер, то корень его должен быть в public. т.е. обращение к сайту http://joke.loc/ (или как ты там домен задал) и все. Сразу ответит index.php. Если не получается можно по простому, запустить встроенный в php веб сервер.
Ты выполнил composer install ? (или если не хочешь лишнего, то composer install --no-dev --optimize-autoloader --classmap-authoritative )
Файл ../vendor/autoload.php существует?
Согласен. Тут есть что комментировать, но хотел сделать релиз до этой пятницы. не до "красоты"
Ок. добавлю в туду.
Английский моя слабая сторона. :) читать более менее, а вот писать...... практики не хватает
composer dev запустит встроенный веб сервер php. После этого по адресу http://localhost:8000 начнет отвечать приложение, но там просто временные "тестовые ошметки". (на момент написания того сообщение там проверял автовайринг в контейнере)
Т.е. в этой репе будет расти именно фреймворк, а не приложение.
Итак, пятница
Выложил, то что наработано на github
Как и обговаривали используется:
- composer . Без него, на мой взгляд, даже в подобного плана проекте, не стоит делать приложение такого класса: если я потом надумаю все же использовать фреймворк для своих целей, нелогично отказываться от возможности использовать при необходимости выбор из огоромного числа модулей для любых задач.
И это единственная зависимость (кроме версии php конечно) для продуктового режима
В режиме разработки: phpunit - тестирование, и voral/version-increment - для автоматизации управления версии и ведения ченжлога (но это пакет разработанный мною)
На данный момент, это не релиз. Хоть все и работает, и погонять при желании можно, но не доведено до логически завершенного этапа.
Что сделано:
- маршрутизация
- сервисный контейнер
- все что реализовано - все покрыто тестами (кроме Application - но там по сути просто пустой класс пока)
Из "галок", что я поставил сам себе: никогда глубоко не вдумывался как реализуется автовайринг - здесь сделал это
В планах на следующую неделю: минимально это выпустить первый логически завершенный релиз и скелетон позволяющий создать на основе фреймворка АПИ (конечно на данном этапе простейшее, без авторизации, да и вообще без решенных вопросов секурности :), но хоть для внутреннего микросервиса. Минимальную доку. по результатам к следующей пятнице запилю видео, например с созданием апи для тривиального TODO листа.
Ну и если будет время - начну шаблонизатор.
На гитхабе в репе:
- в описании "динамический" план
- в ветке master всегда будет работоспособный вариант, и добавлю ветку dev - в которой можно будет, при желании, смотреть прогресс.
Возможно и правильный конечно. Но требует больше времени. У меня есть в общих чертах представления о том как устроено, но для ответов на подобные вопросы точно надо смотреть тут же, и продумывать, что изменить. А так же тогда и нагрузочные тесты писать, чтоб не быть голословным. Это несколько "меняет" поставленую мной для меня задачу. Написать ни куда не згалядывая (в голове конечно есть что то, но все же не детальное). А специально я ни когда фреймворки не изучал глубоко, максимум проваливался по коду при необходимости, единственный опыт: написание когда то очень давно CMS ки. Но начинал я ее тогда даже не будучи Веб-разработчиком. в общем потребует более серьезного углубления... а у меня уже полет мысли ушел в сторону AST деревьев, которые на практике я ни когда не строил, а тут хочу попробовать :)
Но вот в конце, будет интересно сравнить самому. Зарядить базу большим объемом данных, и попробовать нагрузить jMeter`om .
Ну тут надо понимать, что нет (по крайней мере у меня) и, по крайней мере, "пока" (вдруг мой взорвет интернет 🤣 ). Сделать продукт и развивать его потом. Хотя использовать я его запланировал для своих целей: веб морду для доки в Markdown на ней сделаю (есть у меня необходимость в таком инструменте, собственно и инструмент уже есть, но почему бы и нет :). Возможно однажды руки дойдут и до "Домашней бухгалтерии".
Такс. Только не стоит мои слова не совсем корректно подавать. :) Фрейморки класса laravel, simfony, yii, vue, -это серьезные проекты. У них и функционал очень большой (по сравнению с вашим, как минимум в той версии что есть у меня), а так же добавляет ответственность разработчиков перед пользователями (разработчиками использующими их фреймворк), т.е. там и для этого много чего сделано. Т.е. я говорил именно про ваш.
Уточню, это я сейчас не ради "нападок" или попыток "приунизить". А раз уж мои слова цитируете, то хотелось бы, чтоб цитата точно передавал мысль. Кстати, заодно, можете свое определение фреймворку дать: какие обязательные храктеристики, какие необязательные, но важные . Т.е. как вы определите: я сделал фреймворк или нет?