Если вы не один раз начинали новые проекты с использованием Silex, то вы знаете что каждый раз в начале нужно настроить его под себя: добавить провайдеры, переопределить некоторые сервисы, определить структуру каталогов, и т.д. Со временем у вас появляется базовый набор для Silex которые вы используете для создания нового проекта.
Но если у вас его нету, предлагаю вам ознакомиться с моим: Silicone Skeleton.
В Silicone Skeleton включены следующие компоненты:
- HttpCache — работает только в prod окружении.
- Class Controllers — вы можете размещать код контроллеров не только в функциях, но и в методах классов.
- Doctrine Common — вынесен отдельно т.к. используется в нескольких не зависимых провайдерах.
- Doctrine ORM — вы можете пользоваться полноценной ORM (а не только DBAL). Для работы были добавлены следующие команды:
- database:create
- database:drop
- schema:create
- schema:update
- schema:drop
- Monolog — логи пишутся в app/open/log/log.txt
- Session
- Twig — шаблоны лежат в app/view/
- Translation — языковые файлы(yml, xliff) лежат в app/lang/[domain].[locale].yml
- Validators — добавлен недостающий валидатор UniqueEntityValidator для Doctrine Orm
- Forms
- Security — с регистрация и авторизацией пользователей
- Annotation Routes — можно использовать аннотации для роутов и ORM.
- Console — необходимые команды для ORM и очистки кэша.
Структура каталогов очень близка с Symfony
app/
config/ -- Настройки
lang/ -- Языковые файлы
open/ -- Кэш, логи
src/ -- Исходники
vendor/ -- Вендоры
view/ -- Шаблоны
console -- Консоль
web/
index.php
Вы можете использовать обычные Silex контроллеры: $app->get(...) вместе с такими контроллерами:
class Blog extends Controller
{
/**
* @Route("/blog/{post}")
*/
public function post($post)
{
return $this->render('post.twig');
}
}
Так же в Silicone Skeleton полностью настроен Security Provider. И контроллер входа и регистрации.
Для установки используйте Composer:
composer create-project elfet/silicone-skeleton your/app/path
Все желающие помочь с развитием приветствуются!