mirror of
https://github.com/yiisoft/yii2.git
synced 2025-08-14 06:11:35 +08:00
Translated tutorial-yii-integration
This commit is contained in:
@ -110,3 +110,63 @@ new yii\web\Application($yiiConfig); // НЕ ВИКЛИКАЙТЕ run() в ць
|
||||
Як і у випадку з Yii додатком, вам необхідно налаштувати екзампляр додатку виходячи з оточення запущеної сторонньої системи.
|
||||
Наприклад, щоб скористатися можливостями [Active Record](db-active-record.md), необхідно налаштувати `db`
|
||||
[компонент додатку](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'
|
||||
```
|
||||
|
Reference in New Issue
Block a user