From b749cec7aed90f8d29e6adeea04e7beb638c33bd Mon Sep 17 00:00:00 2001 From: 3y3ik Date: Tue, 24 Mar 2015 14:27:59 +0200 Subject: [PATCH] Translated tutorial-yii-integration --- docs/guide-uk/tutorial-yii-integration.md | 62 ++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/docs/guide-uk/tutorial-yii-integration.md b/docs/guide-uk/tutorial-yii-integration.md index 6c1eed55f0..ed15be25bb 100644 --- a/docs/guide-uk/tutorial-yii-integration.md +++ b/docs/guide-uk/tutorial-yii-integration.md @@ -109,4 +109,64 @@ new yii\web\Application($yiiConfig); // НЕ ВИКЛИКАЙТЕ run() в ць Як і у випадку з Yii додатком, вам необхідно налаштувати екзампляр додатку виходячи з оточення запущеної сторонньої системи. Наприклад, щоб скористатися можливостями [Active Record](db-active-record.md), необхідно налаштувати `db` -[компонент додатку](structure-application-components.md) з налаштування підключення бази данних використовуваної стьоронньою системою. \ No newline at end of file +[компонент додатку](structure-application-components.md) з налаштування підключення бази данних використовуваної стьоронньою системою. + +Тепер ви можите використовувати більшість функцій Yii фреймворку. Наприклад, ви можете створювати Active Record класи і +використовувати їх для роботи з базами даних. + +Використання Yii2 з Yii 1 +------------------------- + +Якщо ви попередньо використовували Yii 1, цілком ймовірно, що у вас є робочий додаток Yii 1. +Замість того, щоб переписувати всі додатки під Yii 2, ви можете просто його покращити, використовуючи деякі функції, що +доступні тільки в Yii 2. +Для цього потрібно виконати наступні дії. + +> Примітка: Yii 2 вимагає версію PHP 5.4 або вищу. Переконайтися, що і сервер і додаток підтримують її. + +По-перше, встановити Yii 2 в поточному додатку, можливо виконуючи дії, описані в [попередньому підрозділі](#using-yii-in-others). + +По-друге, змініть вхідний скрипт додатку наступним чином, + +```php +// підключення модифікованого Yii класу описаного нище +require(__DIR__ . '/../components/Yii.php'); + +// налаштування Yii 2 додатку +$yii2Config = require(__DIR__ . '/../config/yii2/web.php'); +new yii\web\Application($yii2Config); // Do NOT call run() + +// налаштування Yii 1 додатку +$yii1Config = require(__DIR__ . '/../config/yii1/main.php'); +Yii::createWebApplication($yii1Config)->run(); +``` + +Так як Yii 1 і Yii 2 використовують `Yii` клас, вам необхідно створити модифіковану версію, яка їх об'єднюватиме. +Наведений нище код підключить модифікований файл `Yii` класу, який може бути створений наступним чином. + +```php +$yii2path = '/path/to/yii2'; +require($yii2path . '/BaseYii.php'); // Yii 2.x + +$yii1path = '/path/to/yii1'; +require($yii1path . '/YiiBase.php'); // Yii 1.x + +class Yii extends \yii\BaseYii +{ + // скопіюйте та вставки код з YiiBase (1.x) сюди +} + +Yii::$classMap = include($yii2path . '/classes.php'); +// реєстрація автозавантажувача Yii2 через Yii1 +Yii::registerAutoloader(['Yii', 'autoload']); +// створення контейнера який вноситиме зміни +Yii::$container = new yii\di\Container; +``` + +От і все! Тепер в любому місці коду можна використовуючи конструкцію `Yii::$app` отримати доступ до екземпляру класу Yii 2 додатку, +а з допомогою конструкції `Yii::app()` - до екземпляру класу Yii 1 додатку. + +```php +echo get_class(Yii::app()); // виводить 'CWebApplication' +echo get_class(Yii::$app); // виводить 'yii\web\Application' +```