Yii 2 Advanced Project Template is a skeleton Yii 2 application best for developing complex Web applications with multiple tiers.
The template includes three tiers: front end, back end, and console, each of which is a separate Yii application.
The template is designed to work in a team development environment. It supports deploying the application in different environments.
Documentation is at docs/guide/README.md.
Installation (Yii2 guide)
console move to root
directory application and run the following commands:
git clone git@github.com:andy87/yii2-app-advanced-soa.git .
# Install dependencies
composer install
# Change directory to `app`
cd yii2
# Initialize application
php init
// Select Dev/Prod
# Run migrations
php yii migrate
php yii_test migrate
console move to root/app
directory application and run the following commands:
./vendor/bin/codecept build
Check the application with codeception tests (Yii2 guide)
./vendor/bin/codecept run
Я люблю Yii2 за его простоту и функциональность, поэтому захотелось создать свою сборку шаблона приложения.
Особенности этого шаблона:
- все файлы declare(strict_types=1)
- nullable warning style
- работает на PHP от 8 версии
- имеет более расширенную структуру директорий и абстракцию
- предустановленные пакеты(которыми приходится часто пользоваться).
- vlucas/phpdotenv - для работы с переменными окружения
- mihaildev/yii2-ckeditor - для работы с редактором текста
- kartik-v/yii2-widget-select2 - для работы с выпадающим списком
- kartik-v/yii2-icons - для работы с иконками
- andy87/knockknock - для запросов
- andy87/yii2-migrate-architect - для работы с миграциями
- andy87/yii2-builder - для массовой генерации файлов
- Вырезаны
bat
файлы. - В
dev
окружение добавлен файлyii2/reset
для удаления локальных файлов сгенерированных через командуinit
- Все тесты адаптированы под работу с
Service
иRepository
- Всем основных классам добавлены родительские
abstract class
yii2
- в корне проекта, содержит только части приложения Yii2.uploads
- в корне проекта, содержит загруженные файлы пользователей.
В директории приложения yii2
добавлены, дочерние папки:
common/components
- содержит компоненты, которые могут использоваться во всех частях приложения.common/services
- содержит сервисы, которые могут использоваться во всех частях приложения, а так же являются родителями для других сервисов.common/repository
- содержит репозитории, которые могут использоваться во всех частях приложения, а так же являются родителями для других репозиториев.common/models/sources
- содержит модели, которые были сгенерированы с помощьюgii
, а так же унаследованы от них "боевые" модели.common/models/dto
- содержит модели, которые используются для передачи данных между сервисами.common/models/forms
- содержит модели форм, которые используются для комбинирования данных, при обработке действия пользователя.
console/services
- содержит сервисы, которые используются вconsole
командах.console/repository
- содержит репозитории, которые используются вconsole
сервисах.
backend/components
- содержит компоненты, которые используются вbackend
части приложения.backend/services
- содержит сервисы, которые используются вbackend
части приложения.backend/repository
- содержит репозитории, которые используются вbackend
сервисах.backend/resources
(ViewModel) - содержит ресурсы, которые используютсяbackend/views
.
frontend/components
- содержит компоненты, которые используются вfrontend
части приложения.frontend/services
- содержит сервисы, которые используются вfrontend
части приложения.frontend/repository
- содержит репозитории, которые используются вfrontend
сервисах.frontend/resources
(ViewModel) - содержит ресурсы, которые используютсяfrontend/views
.
Немного изменён Init.
- создаёт файл
.env
из шаблона.env.example
. - проставляет права на папку
uploads
. - генерирует файлы
.htaccess
для Apache сервера.
- Model Class
yii2\common\models\sources\{Item}
- Search Model Class
yii2\common\models\search\{Item}Search
- Controller Class
yii2\(backend|frontend)\controllers\sources\{Item}Controller
- View Path
@(backend|frontend)/views/sources/{item}
uploads/ + содержит загруженные пользователем файлы
yii2/ + содержит только части приложения Yii2
environments/ содержит переопределения на основе окружения
common/ окружение - общее
components/ + содержит общие компоненты
config/ содержит общие конфигурации
fixterus/ содержит данные для фикстур
mail/ содержит аблоны электронных писем
models/ содержит классы моделей, используемые всеми окружениями
dto/ + содержит модели DTO
forms/ + содержит модели веб-форм
sources/ + содержит модели, созданные gii и унаследованные от них модели, с кастомной логикой
repository/ + содержит общие классы репозиториев
runtime/ содержит runtime сгенерированные файлы
services/ + содержит общие классы сервисов
tests/ содержит общие тесты для общих классов
widget/ содержит общие классы виджетов
console/ окружение - консоль
config/ содержит конфигурации консоли
controllers/ содержит консольные контроллеры (команды)
migrations/ содержит миграции базы данных
models/ содержит модели, специфичные для консоли
repository/ + содержит классы репозиториев
runtime/ содержит runtime сгенерированные файлы
services/ + содержит классы сервисов консоли
backend/ окружение - бэка(админка)
assets/ содержит ресурсы приложения, такие как JavaScript и CSS
components/ + содержит компоненты для backend
config/ содержит конфигурации backend
controllers/ содержит веб-классы контроллеров
models/ содержит модели, специфичные для backend
repository/ + содержит классы репозиториев backend
resources/ + содержит классы ресурсов backend
runtime/ содержит runtime сгенерированные файлы
services/ + содержит классы сервисов backend
tests/ содержит тесты для backend приложения
views/ содержит файлы представлений для веб-приложения
web/ содержит скрипт входа и веб-ресурсы
frontend/ окружение - фронт(пользовательская часть)
assets/ содержит ресурсы приложения, такие как JavaScript и CSS
components/ + содержит компоненты для frontend
config/ содержит конфигурации frontend
controllers/ содержит веб-классы контроллеров
models/ содержит модели, специфичные для frontend
repository/ + содержит классы репозиториев frontend
resources/ + содержит классы ресурсов frontend
runtime/ содержит runtime сгенерированные файлы
services/ + содержит классы сервисов frontend
tests/ содержит тесты для frontend приложения
views/ содержит файлы представлений для веб-приложения
web/ содержит скрипт входа и веб-ресурсы
widgets/ содержит виджеты для frontend
Как правило, имя метода должно начинаться с глагола, описывающего действие метода.
- getter — Получить приватное свойство конкретного объекта
- setter — задать приватное свойство конкретного объекта
- setup... — задать публичное свойство объекта
- get — получить данные исходя из какой-то логики
- set — задать какое-то значение исходя из какой-то логики
- find... — найти данные в базе
- construct/generate — Получить экземпляр класса
- create/generate — создать объект модели в runtime
- add — добавление новой записи в базу
- handler... — обработчик события/формы/модели
- prepare... — подготовить данные для дальнейшего использования
- send... — отправка данных
- is... — проверка на условия
- remove/delete — удаление записи из базы
- filter... — фильтрация данных
- sort... — сортировка данных