# Używanie Yii jako mikroframeworka Yii może być z powodzeniem wykorzystywane bez dodatkowych funkcjonalności dostarczanych przez prosty i zaawansowany szablon aplikacji. Inaczej mówiąc, Yii już jest samo w sobie mikroframeworkiem. Do pracy z Yii nie jest wymagane, aby struktura folderów była dokładnie taka, jak pokazana w szablonach. Jest to szczególnie korzystne, kiedy nie potrzebujesz gotowego kodu szablonów, jak w przypadku assetów luc widoków. Jednym z takich przypadków jest budowa JSON API. W tej sekcji pokażemy jak to zrobić. ## Instalacja Yii Stwórz folder dla plików swojego projektu i ustaw go jako aktywną ścieżkę. Komendy używane w przykładach oparte są na składni UNIXowej, ale podobne dostępne są również w Windows. ```bash mkdir micro-app cd micro-app ``` > Note: minimalna wiedza na temat użytkowania Composera jest wymagana w celu kontynuacji. Jeśli nie wiesz, jak używać Composera, prosimy o zapoznanie się najpierw z [Przewodnikiem po Composerze](https://getcomposer.org/doc/00-intro.md). Stwórz plik `composer.json` w folderze `micro-app`, używając swojego ulubionego edytora i dodaj co następuje: ```json { "require": { "yiisoft/yii2": "~2.0.0" }, "repositories": [ { "type": "composer", "url": "https://asset-packagist.org" } ] } ``` Zapisz plik i uruchom komendę `composer install`. Dzięki temu zainstalujesz framework i wszystkie jego zależności. ## Tworzenie struktury projektu Po zainstalowaniu frameworka, czas na utworzenie [punktu wejścia](structure-entry-scripts.md) dla aplikacji. Punkt wejścia to pierwszy plik, który będzie uruchamiany, podczas startu aplikacji. Ze względów bezpieczeństwa, zalecane jest, aby plik punktu wejścia umieścić w osobnym folderze, który będzie ustawiony jako bazowy folder aplikacji. Stwórz folder `web` i umieść w nim plik `index.php` z następującą zawartością: ```php run(); ``` Stwórz również plik `config.php`, który będzie zawierał całą konfigurację aplikacji: ```php 'micro-app', // ścieżką bazową aplikacji będzie folder `micro-app` 'basePath' => __DIR__, // w tym miejscu określamy, gdzie aplikacja ma szukać wszystkich kontrolerów 'controllerNamespace' => 'micro\controllers', // ustawiamy alias, aby umożliwić autoładowanie klas z przestrzeni nazw 'micro' 'aliases' => [ '@micro' => __DIR__, ], ]; ``` > Info: Pomimo że konfiguracja mogłaby być przechowywana w pliku `index.php`, zalecane jest, aby zapisana była osobno. > Dzięki temu może być również wykorzystywana dla aplikacji konsolowej, jak pokazano to poniżej. Twój projekt jest już gotowy do rozpoczęcia kodowania. Od Ciebie również zależy struktura jego folderów, dopóki jak będziesz pamiętać o poprawnych przestrzeniach nazw. ## Tworzenie pierwszego kontrolera Stwórz folder `controllers` i dodaj w nim plik `SiteController.php`, który będzie domyślnym kontrolerem obsługującym żądania bez wskazanej wyraźnie ścieżki. ```php 'default/index'` w konfiguracji. W tym momencie struktura projektu powinna wyglądać jak poniżej: ``` micro-app/ ├── composer.json ├── web/ └── index.php └── controllers/ └── SiteController.php ``` Jeśli nie ustawiłeś jeszcze serwera web, być może zechcesz zerknąć na [pliki przykładów konfiguracji serwera web](start-installation.md#configuring-web-servers). Inną opcją jest skorzystanie z komendy `yii serve`, która użyje wbudowanego w PHP serwera web. Możesz uruchomić ją z poziomu folderu `micro-app/` za pomocą: vendor/bin/yii serve --docroot=./web Uruchomienie adresu URL aplikacji w przeglądarce powinno zaowocować teraz komunikatem "Hello World!", który jest zwracany w `SiteController::actionIndex()`. > Info: W naszym przykładzie zmieniliśmy domyślną przestrzeń nazw aplikacji `app` na `micro`, aby zademonstrować, > że nie ma potrzeby być ograniczonym przez tę nazwę (w przypadku, gdyby ktoś myślał, że jednak jest). Po zmianie jej na inną, > należy jedynie zmodyfikować odpowiednio [[yii\base\Application::$controllerNamespace|przestrzeń nazw kontrolerów]] i ustawić właściwy alias. ## Tworzenie API REST Aby zademonstrować, jak korzystać z naszego "mikroframeworka", stworzymy proste API REST dla postów. Aby API mogło zwrócić jakieś dane, najpierw potrzebujemy ich bazy. Dodaj konfigurację połączenia z bazą danych do konfiguracji aplikacji: ```php 'components' => [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'sqlite:@micro/database.sqlite', ], ], ``` > Info: Używamy w tym przykładzie bazy danych sqlite dla uproszczenia. Aby zapoznać się z innymi opcjami, przejdź do [przewodnika po bazach danych](db-dao.md). Następnie tworzymy [migrację bazodanową](db-migrations.md), aby skonstruować tabelę postów. Upewnij się, że posiadasz oddzielny plik konfiguracji, jak zostało to opisane powyżej, ponieważ musimy teraz uruchomić komendę konsolową, jak poniżej. Uruchomienie tych komend utworzy plik migracji i wprowadzi migrację do bazy danych: vendor/bin/yii migrate/create --appconfig=config.php create_post_table --fields="title:string,body:text" vendor/bin/yii migrate/up --appconfig=config.php Stwórz folder `models` i plik `Post.php` w tym folderze. Poniżej znajdziesz kod dla modelu: ```php Info: Tak utworzony model jest klasą ActiveRecord, która reprezentuje dane z tabeli `posts`. > Zapoznaj się z [przewodnikiem po active record](db-active-record.md), aby uzyskać więcej informacji. Aby obsłużyć posty w naszym API, dodaj `PostController` w `controllers`: ```php