Try Symfony

Init project

composer create-project symfony/skeleton books-test-php

Development web server

Install dev web server:

composer require server --dev

Run server in foreground:

php bin/console server:run

Run server in background:

php bin/console server:start

Stop daemonized server:

php bin/console server:stop

Профилирование

composer require profiler

Index page

Установим поддержку аннотаций:

composer require annotations

Будем использовать их, хотя в прописывании марштрутов в отдельном файле config/routes.yaml есть свои плюсы (не надо рыскать по всему коду в поисках маршрутов).

Так же потребуется генератор кода:

composer require maker

Теперь можно нагеренить контроллер:

php bin/console make:controller DefaultController

Заготовка контроллера будет создана в каталоге src/Controller.

Init database

composer require doctrine

После этого можно прописать в .env корректную строку доступа к БД. В нашем случае это sqlite:

DATABASE_URL="sqlite:///%kernel.project_dir%/var/books.db"

Теперь можно создать БД:

php bin/console doctrine:database:create

Или грохнуть её, если не нужна больше:

php bin/console doctrine:database:drop --force

Создание сущеностей

Полезно почитать про аннотации doctrine.

Сгенерировать шаблон сущности можно командой:

php bin/console make:entity Author

аналогично создаём сущность для книг.

После можно создать миграцию:

php bin/console make:migration

и применить её:

php bin/console doctrine:migrations:migrate

Twig

composer require twig

Формы

https://symfony.com.ua/doc/current/forms.html

composer require form