merge from yiisoft/yii2

This commit is contained in:
cuileon
2018-11-14 11:57:32 +08:00
parent 47df8a8cc0
commit 489dd119a5
426 changed files with 18465 additions and 4215 deletions

View File

@ -2,14 +2,14 @@
============================
時々、Yii アプリケーションの中でサードパーティのコードを使用する必要があることがあります。
あるいは、サードパーティのシステムの中で Yii をライブラリとして使用したいこともあるでしょう。
このセクションでは、こういう目的をどうやって達成するかを説明します。
あるいは、サードパーティのシステムの中で Yii をライブラリとして使用したいこともあるでしょう。このセクションでは、こういう目的をどうやって達成するかを説明します。
Yii の中でサードパーティのライブラリを使う <span id="using-libs-in-yii"></span>
------------------------------------------
Yii アプリケーションの中でサードパーティのライブラリを使うために主として必要なことは、そのライブラリのクラスが適切にインクルードされること、または、オートロード可能であることを保証することです。
Yii アプリケーションの中でサードパーティのライブラリを使うために主として必要なことは、
そのライブラリのクラスが適切にインクルードされること、または、オートロード可能であることを保証することです。
### Composer パッケージを使う <span id="using-composer-packages"></span>
@ -20,7 +20,8 @@ Yii アプリケーションの中でサードパーティのライブラリを
2. `composer install` を実行して、指定したパッケージをインストールする。
インストールされた Composer パッケージ内のクラスは、Composer のオートローダを使ってオートロードすることが出来ます。
アプリケーションの [エントリ・スクリプト](structure-entry-scripts.md) に、Composer のオートローダをインストールするための下記の行があることを確認してください。
アプリケーションの [エントリ・スクリプト](structure-entry-scripts.md) に、
Composer のオートローダをインストールするための下記の行があることを確認してください。
```php
// Composer のオートローダをインストール
@ -37,7 +38,8 @@ require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
ここで `BasePath` は、アプリケーションの [base path](structure-applications.md#basePath) を表すものです。
ライブラリがそれ自身のオートローダを持っている場合は、それをアプリケーションの [エントリ・スクリプト](structure-entry-scripts.md) でインストールすることが出来ます。
複数のオートローダ・クラスの中で Yii のクラス・オートローダが優先されるように、ライブラリのオートローダは `Yii.php` ファイルをインクルードする前にインストールすることを推奨します。
複数のオートローダ・クラスの中で Yii のクラス・オートローダが優先されるように、
ライブラリのオートローダは `Yii.php` ファイルをインクルードする前にインストールすることを推奨します。
ライブラリがクラスオートローダを提供していない場合でも、クラスの命名規約が [PSR-4](http://www.php-fig.org/psr/psr-4/) に従っている場合は、ライブラリのクラスをオートロードするのに Yii のクラス・オートローダを使うことが出来ます。
必要なことは、ライブラリのクラスによって使われている全てのルート名前空間に対して [ルート・エイリアス](concept-aliases.md#defining-aliases) を宣言することだけです。
@ -56,11 +58,12 @@ require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
上記のどちらにも当てはまらない場合、おそらくそのライブラリは、クラス・ファイルを探して適切にインクルードするために、PHP の include path 設定に依存しているのでしょう。
この場合は、PHP include path の設定に関するライブラリの指示に従うしかありません。
最悪の場合として、ライブラリが全てのクラス・ファイルを明示的にインクルードすることを要求している場合は、次の方法を使ってクラスを必要に応じてインクルードすることが出来るようになります。
最悪の場合として、ライブラリが全てのクラス・ファイルを明示的にインクルードすることを要求している場合は、
次の方法を使ってクラスを必要に応じてインクルードすることが出来るようになります。
* ライブラリに含まれるクラスを特定する。
* アプリケーションの [エントリ・スクリプト](structure-entry-scripts.md) において、クラスと対応するファイル・パスを `Yii::$classMap` としてリストアップする。
例えば、
* アプリケーションの [エントリ・スクリプト](structure-entry-scripts.md) において、
クラスと対応するファイル・パスを `Yii::$classMap` としてリストアップする。例えば、
```php
Yii::$classMap['Class1'] = 'path/to/Class1.php';
Yii::$classMap['Class2'] = 'path/to/Class2.php';
@ -70,41 +73,30 @@ Yii::$classMap['Class2'] = 'path/to/Class2.php';
サードパーティのシステムで Yii を使う <span id="using-yii-in-others"></span>
-------------------------------------
Yii は数多くの優れた機能を提供していますので、サードパーティのシステム (例えば、WordPress、Joomla、または、他の PHP フレームワークを使って開発されるアプリケーション) を開発したり機能拡張したりするのをサポートするために Yii の機能のいくつかを使用したいことがあるでしょう。
例えば、[[yii\helpers\ArrayHelper]] クラスや [アクティブレコード](db-active-record.md) をサードパーティのシステムで使いたいことがあるでしょう。
Yii は数多くの優れた機能を提供していますので、サードパーティのシステム (例えば、WordPress、Joomla、または、他の PHP フレームワークを使って開発されるアプリケーション)
を開発したり機能拡張したりするのをサポートするために Yii の機能のいくつかを使用したいことがあるでしょう。
例えば、[[yii\helpers\ArrayHelper]] クラスや [アクティブ・レコード](db-active-record.md) をサードパーティのシステムで使いたいことがあるでしょう。
この目的を達するためには、主として、二つのステップを踏む必要があります。
すなわち、Yii のインストールと、Yii のブートストラップです。
サードパーティのシステムが Composer を使って依存を管理している場合は、単に下記のコマンドを実行すれば Yii をインストールすることが出来ます。
サードパーティのシステムが Composer を使って依存を管理している場合は、
単に下記のコマンドを実行すれば Yii をインストールすることが出来ます。
composer global require "fxp/composer-asset-plugin:~1.3.1"
composer require yiisoft/yii2
composer install
最初のコマンドは [composer アセット・プラグイン](https://github.com/francoispluchino/composer-asset-plugin/) をインストールします。
これは、Composer によって bower と npm の依存パッケージを管理できるようにするものです。
このことは、データベースなど、アセットに関係しない Yii の機能を使いたいだけの場合でも、Yii の Composer パッケージをインストールするために必要とされます。
[Yii のアセット発行の機能](structure-assets.md) を使いたい場合は、あなたの `composer.json``extra` セクションに次の構成も追加しなければなりません。
```json
{
...
"extra": {
"asset-installer-paths": {
"npm-asset-library": "vendor/npm",
"bower-asset-library": "vendor/bower"
}
}
}
```bash
composer require yiisoft/yii2
```
Composer に関する更なる情報や、インストールの過程で出現しうる問題に対する解決方法については、一般的な [Composer によるインストール](start-installation.md#installing-via-composer) のセクションを参照してください。
データベース抽象レイヤなど、アセットに関係しない Yii の機能だけを使用したい場合は、
Bower および NPM のパッケージのインストールを阻止する特別な composer パッケージが必要になります。
詳細については [cebe/assetfree-yii2](https://github.com/cebe/assetfree-yii2) を参照して下さい。
そうでない場合は、Yii のリリースを [ダウンロード](http://www.yiiframework.com/download/) して、`BasePath/vendor` ディレクトリに解凍してください。
Composer に関する更なる情報や、インストールの過程で出現しうる問題に対する解決方法については、
一般的な [Composer によるインストール](start-installation.md#installing-via-composer) のセクションを参照してください。
次に、サードパーティのシステムのエントリ・スクリプトを修正します。
次のコードをエントリ・スクリプトの先頭に追加してください。
そうでない場合は、Yii のリリースを [ダウンロード](http://www.yiiframework.com/download/) して、
`BasePath/vendor` ディレクトリに解凍してください。
次に、サードパーティのシステムのエントリ・スクリプトを修正します。次のコードをエントリ・スクリプトの先頭に追加してください。
```php
require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
@ -115,13 +107,15 @@ new yii\web\Application($yiiConfig); // ここで run() を呼ばない
ごらんのように、上記のコードは典型的な Yii アプリケーションの [エントリ・スクリプト](structure-entry-scripts.md) と非常に良く似ています。
唯一の違いは、アプリケーションのインスタンスが作成された後に `run()` メソッドが呼ばれない、という点です。
`run()` を呼ぶと Yii がリクエスト処理のワークフローを制御するようになりますが、この場合はリクエストを処理する別のアプリケーションが既に存在していますので、これは必要ではないからです。
`run()` を呼ぶと Yii がリクエスト処理のワークフローを制御するようになりますが、
この場合はリクエストを処理する別のアプリケーションが既に存在していますので、これは必要ではないからです。
Yii アプリケーションでの場合と同じように、サードパーティ・システムが走っている環境に基づいて Yii のアプリケーション・インスタンスを構成する必要があります。
例えば、[アクティブレコード](db-active-record.md) の機能を使うためには、サードパーティ・システムによって使用されている DB 接続の設定を使って `db` [アプリケーション・コンポーネント](structure-application-components.md) を構成しなければなりません。
例えば、[アクティブレコード](db-active-record.md) の機能を使うためには、サードパーティ・システムによって使用されている DB 接続の設定を使って
`db` [アプリケーション・コンポーネント](structure-application-components.md) を構成しなければなりません。
これで、Yii によって提供されているほとんどの機能を使うことが出来ます。
例えば、アクティブレコード・クラスを作成して、それを使ってデータベースを扱うことが出来ます。
例えば、アクティブレコード・クラスを作成して、それを使ってデータベースを扱うことが出来ます。
Yii 2 を Yii 1 とともに使う <span id="using-both-yii2-yii1"></span>