# Использование Yii в качестве микро-framework'а Yii можно легко использовать без функций включенных в базовый и расширенный шаблоны приложений. Другими словами Yii уже является микро-каркасом. Не требуется иметь структуру каталогов предоставляемую этими шаблонами при работе с Yii. Это особенно удобно, когда Вам не нужен весь пред-установленный шаблонный код, такой как `Assets` или `Views`. Одним из таких случаев является создание JSON API. В следующих разделах будет показано, как это сделать. ## Установка Yii Создайте каталог для файлов проекта и смените рабочий каталог на этот путь. В примерах используются команды Unix, но аналогичные команды существуют и в Windows. ```bash mkdir micro-app cd micro-app ``` > Note: Для продолжения требуется немного знаний о Composer. Если Вы еще не знаете, как использовать Composer, пожалуйста, найдите время, чтобы прочитать [Руководство Composer](https://getcomposer.org/doc/00-intro.md). Создайте файл `composer.json` в каталоге `micro-app` с помощью Вашего любимого редактора и добавьте следующее: ```json { "require": { "yiisoft/yii2": "~2.0.0" }, "repositories": [ { "type": "composer", "url": "https://asset-packagist.org" } ] } ``` Сохраните файл и запустите команду `composer install`. Это установит framework со всеми его зависимостями. ## Создание структуры проекта После того как Вы установили фреймворк, пришло время создать [входную точку](structure-entry-scripts.md) приложения. Точка входа - это самый первый файл, который будет выполнен при попытке открыть приложение. По соображениям безопасности рекомендуется поместить файл точки входа в отдельный каталог и сделать каталог корнем веб директории. Создайте каталог `web` и поместите в него файл `index.php` со следующим содержимым: ```php run(); ``` Также создайте файл с именем `config.php`, который будет содержать всю конфигурацию приложения: ```php 'micro-app', // basePath (базовый путь) приложения будет каталог `micro-app` 'basePath' => __DIR__, // это пространство имен где приложение будет искать все контроллеры 'controllerNamespace' => 'micro\controllers', // установим псевдоним '@micro', чтобы включить автозагрузку классов из пространства имен 'micro' 'aliases' => [ '@micro' => __DIR__, ], ]; ``` > Info: Несмотря на то, что конфигурация приложения может находиться в файле `index.php` рекомендуется > содержать её в отдельном файле. Таким образом её можно также использовать и для консольного приложения, как показано ниже. Теперь Ваш проект готов к наполнению кодом. Вам решать какую структуру каталогов проекта Вы выберите, пока Вы сможете видеть пространства имен. ## Создание первого контроллера Создайте каталог `controllers` и добавьте туда файл `SiteController.php` который является контроллером по умолчанию, он будет обрабатывать запрос без пути. ```php 'default/index'`. На данный момент структура проекта должна выглядеть так: ``` micro-app/ ├── composer.json ├── web/ └── index.php └── controllers/ └── SiteController.php ``` Если Вы еще не настроили веб-сервер, Вы можете взглянуть на [примеры конфигурационных файлов веб-серверов](start-installation.md#configuring-web-servers). Другой возможностью является использование команды `yii serve` которая будет использовать встроенный веб-сервер PHP. Вы можете запустить её из каталога `micro-app/` через: vendor/bin/yii serve --docroot=./web При открытии URL приложения в браузере, он теперь должен печатать "Hello World!" который был возвращен из `SiteController::actionIndex()`. > Info: В нашем примере мы изменили пространство имен по умолчанию приложения с `app` на` micro`, чтобы продемонстрировать > что Вы не привязаны к этому имени (в случае, если Вы считали, что это так), а затем скорректировали > [[yii\base\Application::$controllerNamespace|controllers namespace]] и установили правильный псевдоним. ## Создание REST API Чтобы продемонстрировать использование нашей "микроархитектуры", мы создадим простой REST API для сообщений. Чтобы этот API обслуживал некоторые данные, нам нужна база данных. Добавим конфигурацию подключения базы данных к конфигурации приложения: ```php 'components' => [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'sqlite:@micro/database.sqlite', ], ], ``` > Info: Для простоты мы используем базу данных sqlite. Дополнительную информацию см. в [Руководство по базам данных](db-dao.md). Затем мы создаем [миграции базы данных](db-migrations.md) для создания таблицы сообщений. Убедитесь, что у Вас есть отдельный файл конфигурации, как описано выше, нам это нужно для того, чтобы запустить консольные команды описанные ниже. Запуск следующих команд создаст файл миграции базы данных и применит миграцию к базе данных: vendor/bin/yii migrate/create --appconfig=config.php create_post_table --fields="title:string,body:text" vendor/bin/yii migrate/up --appconfig=config.php Создайте каталог `models` и файл` Post.php` в этом каталоге. Это код модели: ```php Info: Созданная модель представляет собой класс ActiveRecord, который представляет данные из таблицы `posts`. > Для получения дополнительной информации обратитесь к [active record руководству](db-active-record.md). Чтобы обслуживать сообщения в нашем API, добавьте `PostController` в` controllers`: ```php