Translated tutorial-yii-integration

This commit is contained in:
3y3ik
2015-03-24 14:27:59 +02:00
parent 3e575410bd
commit b749cec7ae

View File

@ -109,4 +109,64 @@ new yii\web\Application($yiiConfig); // НЕ ВИКЛИКАЙТЕ run() в ць
Як і у випадку з Yii додатком, вам необхідно налаштувати екзампляр додатку виходячи з оточення запущеної сторонньої системи. Як і у випадку з Yii додатком, вам необхідно налаштувати екзампляр додатку виходячи з оточення запущеної сторонньої системи.
Наприклад, щоб скористатися можливостями [Active Record](db-active-record.md), необхідно налаштувати `db` Наприклад, щоб скористатися можливостями [Active Record](db-active-record.md), необхідно налаштувати `db`
[компонент додатку](structure-application-components.md) з налаштування підключення бази данних використовуваної стьоронньою системою. [компонент додатку](structure-application-components.md) з налаштування підключення бази данних використовуваної стьоронньою системою.
Тепер ви можите використовувати більшість функцій Yii фреймворку. Наприклад, ви можете створювати Active Record класи і
використовувати їх для роботи з базами даних.
Використання Yii2 з Yii 1 <span id="using-both-yii2-yii1"></span>
-------------------------
Якщо ви попередньо використовували 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'
```