Так можно же реально интересный проект. Очередной фреймворк никому не нужен просто. Это не мое мнение - это реалии, которые легко проверяются на гите.
Тогда полезное. Вот Sly32 хочет написать сервис для СЕО. Отличная задача. Попытаться систематизировать СЕО. Либо полезную веб утилиту, по типу защиты от ботов, или подобие клаудфлар (очень актуально).
Есть. Но челлендж это не увлечение, а соревнование. Если бы Вы сказали, что в свободное время кодите - никто и слова бы не сказал. Но здесь дух соревнования.
Так можно же написать полезную фичу.
Так каждая команда работает по своему. У всех разные задачи. Кому-то CLI нужен, а на 80% сайтов - это мертвый код. Подход зависит от задачи. Реализация - от тимлида. Тим лид - человек, следовательно будет основываться на своем опыте, видении. Я же и пишу, что не понимаю критериев оценки. Есть много разных паттернов программирования. Что ближе, то и используют. Код может быть красивым, но терять на запросе или выполнении 2-3мс, что в итоге выльется в задержки, которые придется дебажить при увеличении нагрузки.
Магия, фасады, абстракция. Я выше писал, мой подход - DRY, KISS. Для меня лучшее решение - очевидное. Если любой дурак, увидев ошибку сможет её пофиксить - это идеальный код.
Вот Вы, к примеру строите фреймворк с подключением к разным БД. Вопрос: если по итогу будете использовать MySQL подобные (MariaDB например, через PDO) , зачем вам коннект с PostgreSQL? На будущее? А если оно не наступит? Мертвый код уже сейчас. Используете ORM? Для меня оптимален Query builder и нативный SQL в сложных запросах.
нет.
Вообще я в начале и местами поспешил, местами пока нет четкой картинки "что хочу".
Да run понимаю, тут в планах наводить чистоту точно. собственно в нем todo для этого и висит
Так, а критерии оценки какие? Я чуть посматриваю на ваш челлендж, но не пойму, как оценивать будут. У всех разные подходы в программировании. Кто-то жертвует простотой статичных методов в угоду тестам, т.к. статику сложно мокать. Кто-то пишет спаггети код в угоду ООП, не следуя принципам DRY. Для меня ваш код избыточен и сложен по структуре. Не НЕ пониманию код, а по структуре самого фреймворка. Для меня антипаттерн - это Ларавель. Из всех крупных - мне ближе CI4.
Итак очередной спринт завершился.
В этот раз движения более скромные (очень насыщенные были две недели)
Шаблонизатор
Как и отмечал ранее: Три раза переписав лексер, пришел к окончательному концепту. Для дальнейшей разработки требуется механизм регистрации модулей в фреймворке
Релиза пока нет, актуальное состояние модуля на момент этого сообщения на gtihub
Фреймворк
Так же релиза пока нет, актуальное состояние на github в ветке next (на момент сообщения: здесь)
В общем на следующий спринт: задача минимум выпустить релиз фреймворка с конфигурацией, с механизмом регистрации модулей, а так же есть у меня небольшой todo , а в максимуме: реализовать в шаблонизаторе базовый функционал и базовые теги
PS Надеюсь ArbNet завтра хоть, что то расскажет о подвижках
** * @inheritDoc */ public function getParameterResolver(): ResolverInterface { if (isset($this->singletons[ResolverInterface::class])) { /** @var ResolverInterface $resolver */ $resolver = $this->singletons[ResolverInterface::class]; return $resolver; } $definition = $this->singletonsRegistry[ResolverInterface::class] ?? ResolverInterface::class; $this->singletons[ResolverInterface::class] = new $definition($this); return $this->singletons[ResolverInterface::class]; }
$definition не проверяется?
Route::run() не соответствует принципам DRY. Слишком много повторений (и не только здесь). Конечно понятно, что это учебный материал, но, к примеру, я сторонник DRY, KISS, а другие только SOLID, кто-то чистый ООП в угоду простоте. По каким критериям оценка будет?