Commit bea4eb5c by Alexander Makarov

Merge pull request #7117 from softark/docs-guide-ja-structure-rev-completed

docs/guide-ja/structure - review completed [ci skip]
parents 11dc0fdb 246fe472
...@@ -6,9 +6,9 @@ Yii 縺ァ縺ッ縲√い繧サ繝ヨ縺ッ縲√え繧ァ繝悶繝シ繧ク縺ァ蜿ら縺ァ縺阪k繝輔ぃ繧、繝ォ ...@@ -6,9 +6,9 @@ Yii 縺ァ縺ッ縲√い繧サ繝ヨ縺ッ縲√え繧ァ繝悶繝シ繧ク縺ァ蜿ら縺ァ縺阪k繝輔ぃ繧、繝ォ
アセットはウェブでアクセス可能なディレクトリに配置され、ウェブサーバによって直接に提供されます。 アセットはウェブでアクセス可能なディレクトリに配置され、ウェブサーバによって直接に提供されます。
たいていの場合、アセットはプログラム的に管理する方が望ましいものです。 たいていの場合、アセットはプログラム的に管理する方が望ましいものです。
例えば、ページの中で [[yii\jui\DatePicker]] ウィジェットを使うとき、ウィジェットが必要な CSS と JavaScript のファイルを自動的にインクルードします。 例えば、ページの中で [[yii\jui\DatePicker]] ウィジェットを使うとき、このウィジェットは必要な CSS と JavaScript のファイルを自動的にインクルードします。
あなたに対して、手作業で必要なファイルを探してインクルードするように要求したりはしません。 あなたに対して、手作業で必要なファイルを探してインクルードするように要求したりはしません。
そして、ウィジェットを新しいバージョンにアップグレードしたときは、ウィジェットが自動的に新しいバージョンのアセットファイルを使用するようになります。 そして、このウィジェットを新しいバージョンにアップグレードしたときは、自動的に新しいバージョンのアセットファイルが使用されるようになります。
このチュートリアルでは、Yii によって提供される強力なアセット管理機能について説明します。 このチュートリアルでは、Yii によって提供される強力なアセット管理機能について説明します。
...@@ -57,34 +57,29 @@ class AppAsset extends AssetBundle ...@@ -57,34 +57,29 @@ class AppAsset extends AssetBundle
* [[yii\web\AssetBundle::sourcePath|sourcePath]]: このバンドルのアセットファイルを含むルートディレクトリを指定します。 * [[yii\web\AssetBundle::sourcePath|sourcePath]]: このバンドルのアセットファイルを含むルートディレクトリを指定します。
ルートディレクトリがウェブからアクセス可能でない場合に、このプロパティをセットしなければなりません。 ルートディレクトリがウェブからアクセス可能でない場合に、このプロパティをセットしなければなりません。
ルートディレクトリがウェブからアクセス可能な場合は、このプロパティではなく、[[yii\web\AssetBundle::basePath|basePath]] と [[yii\web\AssetBundle::baseUrl|baseUrl]] のプロパティをセットすべきです。 そうでない場合は、代りに、[[yii\web\AssetBundle::basePath|basePath]] と [[yii\web\AssetBundle::baseUrl|baseUrl]] のプロパティをセットしなければなりません。
[パスエイリアス](concept-aliases.md) をここで使うことが出来ます。 [パスエイリアス](concept-aliases.md) をここで使うことが出来ます。
* [[yii\web\AssetBundle::basePath|basePath]]: このバンドルのアセットファイルを含むウェブからアクセス可能なディレクトリを指定します。 * [[yii\web\AssetBundle::basePath|basePath]]: このバンドルのアセットファイルを含むウェブからアクセス可能なディレクトリを指定します。
[[yii\web\AssetBundle::sourcePath|sourcePath]] プロパティをセットした場合は、[アセットマネージャ](#asset-manager) がバンドルに含まれるファイルをウェブからアクセス可能なディレクトリに発行して、その結果、このプロパティを上書きします。 [[yii\web\AssetBundle::sourcePath|sourcePath]] プロパティをセットした場合は、[アセットマネージャ](#asset-manager) がバンドルに含まれるファイルをウェブからアクセス可能なディレクトリに発行して、その結果、このプロパティを上書きします。
アセットファイルが既にウェブからアクセス可能なディレクトリにあり、アセットの発行が必要でない場合に、このプロパティをセットすべきです。 アセットファイルが既にウェブからアクセス可能なディレクトリにあり、アセットの発行が必要でない場合に、このプロパティをセットしなければなりません。
[パスエイリアス](concept-aliases.md) をここで使うことが出来ます。 [パスエイリアス](concept-aliases.md) をここで使うことが出来ます。
* [[yii\web\AssetBundle::baseUrl|baseUrl]]: [[yii\web\AssetBundle::basePath|basePath]] ディレクトリに対応する URL を指定します。 * [[yii\web\AssetBundle::baseUrl|baseUrl]]: [[yii\web\AssetBundle::basePath|basePath]] ディレクトリに対応する URL を指定します。
[[yii\web\AssetBundle::basePath|basePath]] と同じように、[[yii\web\AssetBundle::sourcePath|sourcePath]] プロパティをセットした場合は、[アセットマネージャ](#asset-manager) がアセットを発行して、その結果、このプロパティを上書きします。 [[yii\web\AssetBundle::basePath|basePath]] と同じように、[[yii\web\AssetBundle::sourcePath|sourcePath]] プロパティをセットした場合は、[アセットマネージャ](#asset-manager) がアセットを発行して、その結果、このプロパティを上書きします。
[パスエイリアス](concept-aliases.md) をここで使うことが出来ます。 [パスエイリアス](concept-aliases.md) をここで使うことが出来ます。
* [[yii\web\AssetBundle::js|js]]: このバンドルに含まれる JavaScript ファイルをリストする配列です。 * [[yii\web\AssetBundle::js|js]]: このバンドルに含まれる JavaScript ファイルをリストする配列です。
ディレクトリの区切りとしてフォワードスラッシュ "/" だけを使うべきことに注意してください。 ディレクトリの区切りとしてフォワードスラッシュ "/" だけを使わなければならないことに注意してください。
それぞれの JavaScript ファイルは、以下の二つの形式のどちらかによって指定することが出来ます。 それぞれの JavaScript ファイルは、以下の二つの形式のどちらかによって指定することが出来ます。
- ローカルの JavaScript ファイルを表す相対パス (例えば `js/main.js`)。 - ローカルの JavaScript ファイルを表す相対パス (例えば `js/main.js`)。
実際のファイルのパスは、この相対パスの前に [[yii\web\AssetManager::basePath]] を付けることによって決定されます。 実際のファイルのパスは、この相対パスの前に [[yii\web\AssetManager::basePath]] を付けることによって決定されます。
また、実際の URL は、この相対パスの前に [[yii\web\AssetManager::baseUrl]] を付けることによって決定されます。 また、実際の URL は、この相対パスの前に [[yii\web\AssetManager::baseUrl]] を付けることによって決定されます。
- 外部の JavaScript ファイルを表す絶対 URL。 - 外部の JavaScript ファイルを表す絶対 URL。
例えば、`http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js` 例えば、`http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js``//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js` など。
`//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js` など。
* [[yii\web\AssetBundle::css|css]]: このバンドルに含まれる CSS ファイルをリストする配列です。 * [[yii\web\AssetBundle::css|css]]: このバンドルに含まれる CSS ファイルをリストする配列です。
この配列の形式は、[[yii\web\AssetBundle::js|js]] の形式と同じです。 この配列の形式は、[[yii\web\AssetBundle::js|js]] の形式と同じです。
* [[yii\web\AssetBundle::depends|depends]]: このバンドルが依存しているアセットバンドルの名前をリストする配列です * [[yii\web\AssetBundle::depends|depends]]: このバンドルが依存しているアセットバンドルの名前をリストする配列です
(バンドルの依存関係については、すぐ後で説明します)。 (バンドルの依存関係については、すぐ後で説明します)。
* [[yii\web\AssetBundle::jsOptions|jsOptions]]: [[yii\web\View::registerJsFile()]] メソッドに渡されるオプションを指定します。 * [[yii\web\AssetBundle::jsOptions|jsOptions]]: このバンドルにある *全て* の JavaScript ファイルについて、それを登録するときに呼ばれる [[yii\web\View::registerJsFile()]] メソッドに渡されるオプションを指定します。
このバンドルにある *全て* の JavaScript ファイルについて、それを登録するときに、このメソッドが指定されたオプションとともに呼ばれます。 * [[yii\web\AssetBundle::publishOptions|publishOptions]]: ソースのアセットファイルをウェブディレクトリに発行するときに呼ばれる [[yii\web\AssetManager::publish()]] メソッドに渡されるオプションを指定します。
* [[yii\web\AssetBundle::cssOptions|cssOptions]]: [[yii\web\View::registerCssFile()]] メソッドに渡されるオプションを指定します。
このバンドルにある *全て* の CSS ファイルについて、それを登録するときに、このメソッドが指定されたオプションとともに呼ばれます。
* [[yii\web\AssetBundle::publishOptions|publishOptions]]: [[yii\web\AssetManager::publish()]] メソッドに渡されるオプションを指定します。
ソースのアセットファイルをウェブディレクトリに発行するときに、このメソッドが指定されたオプションとともに呼ばれます。
これは [[yii\web\AssetBundle::sourcePath|sourcePath]] プロパティを指定した場合にだけ使用されます。 これは [[yii\web\AssetBundle::sourcePath|sourcePath]] プロパティを指定した場合にだけ使用されます。
...@@ -105,8 +100,7 @@ class AppAsset extends AssetBundle ...@@ -105,8 +100,7 @@ class AppAsset extends AssetBundle
アプリケーションに属するアセットは、不要なアセット発行プロセスを避けるために、ウェブディレクトリに置くことが推奨されます。 アプリケーションに属するアセットは、不要なアセット発行プロセスを避けるために、ウェブディレクトリに置くことが推奨されます。
前述の例において `AppAsset`[[yii\web\AssetBundle::sourcePath|sourcePath]] ではなく [[yii\web\AssetBundle::basePath|basePath]] を指定しているのは、これが理由です。 前述の例において `AppAsset`[[yii\web\AssetBundle::sourcePath|sourcePath]] ではなく [[yii\web\AssetBundle::basePath|basePath]] を指定しているのは、これが理由です。
[エクステンション](structure-extensions.md) の場合は、アセットがソースコードと一緒にウェブからアクセス出来ないディレクトリに配置されているため、 [エクステンション](structure-extensions.md) の場合は、アセットがソースコードと一緒にウェブからアクセス出来ないディレクトリに配置されているため、アセットバンドルクラスを定義するときには [[yii\web\AssetBundle::sourcePath|sourcePath]] プロパティを指定しなければなりません。
アセットバンドルクラスを定義するときには [[yii\web\AssetBundle::sourcePath|sourcePath]] プロパティを指定しなければなりません。
> Note|注意: `@webroot/assets` を [[yii\web\AssetBundle::sourcePath|ソースパス]] として使ってはいけません。 > Note|注意: `@webroot/assets` を [[yii\web\AssetBundle::sourcePath|ソースパス]] として使ってはいけません。
このディレクトリは、デフォルトでは、[[yii\web\AssetManager|アセットマネージャ]] がソースの配置場所から発行されたアセットファイルを保存する場所として使われます。 このディレクトリは、デフォルトでは、[[yii\web\AssetManager|アセットマネージャ]] がソースの配置場所から発行されたアセットファイルを保存する場所として使われます。
...@@ -128,10 +122,8 @@ class AppAsset extends AssetBundle ...@@ -128,10 +122,8 @@ class AppAsset extends AssetBundle
### アセットのオプション <span id="asset-options"></span> ### アセットのオプション <span id="asset-options"></span>
[[yii\web\AssetBundle::cssOptions|cssOptions]] および [[yii\web\AssetBundle::jsOptions|jsOptions]] のプロパティを指定して、 [[yii\web\AssetBundle::cssOptions|cssOptions]] および [[yii\web\AssetBundle::jsOptions|jsOptions]] のプロパティを指定して、CSS と JavaScript ファイルがページにインクルードされる方法をカスタマイズすることが出来ます。
CSS と JavaScript ファイルがページにインクルードされる方法をカスタマイズすることが出来ます。 これらのプロパティの値は、[ビュー](structure-views.md) が CSS と JavaScript ファイルをインクルードするために、[[yii\web\View::registerCssFile()]] および [[yii\web\View::registerJsFile()]] メソッドを呼ぶときに、それぞれ、オプションとして引き渡されます。
これらのプロパティの値は、[ビュー](structure-views.md) が CSS と JavaScript ファイルをインクルードするために、[[yii\web\View::registerCssFile()]] および
[[yii\web\View::registerJsFile()]] メソッドを呼ぶときに、それぞれ、オプションとして引き渡されます。
> Note|注意: バンドルクラスでセットしたオプションは、バンドルの中の *全て* の CSS/JavaScript ファイルに適用されます。 > Note|注意: バンドルクラスでセットしたオプションは、バンドルの中の *全て* の CSS/JavaScript ファイルに適用されます。
いろいろなファイルに別々のオプションを使用したい場合は、別々のアセットバンドルを作成して、個々のバンドルの中では、一組のオプションを使うようにしなければなりません。 いろいろなファイルに別々のオプションを使用したい場合は、別々のアセットバンドルを作成して、個々のバンドルの中では、一組のオプションを使うようにしなければなりません。
...@@ -221,8 +213,7 @@ use app\assets\AppAsset; ...@@ -221,8 +213,7 @@ use app\assets\AppAsset;
AppAsset::register($this); // $this はビューオブジェクトを表す AppAsset::register($this); // $this はビューオブジェクトを表す
``` ```
> Info|情報: [[yii\web\AssetBundle::register()]] メソッドは、[[yii\web\AssetBundle::basePath|basePath]] や > Info|情報: [[yii\web\AssetBundle::register()]] メソッドは、[[yii\web\AssetBundle::basePath|basePath]] や [[yii\web\AssetBundle::baseUrl|baseUrl]] など、発行されたアセットに関する情報を含むアセットバンドルオブジェクトを返します。
[[yii\web\AssetBundle::baseUrl|baseUrl]] など、発行されたアセットに関する情報を含むアセットバンドルオブジェクトを返します。
他の場所でアセットバンドルを登録しようとするときは、必要とされるビューオブジェクトを提供しなければなりません。 他の場所でアセットバンドルを登録しようとするときは、必要とされるビューオブジェクトを提供しなければなりません。
例えば、[ウィジェット](structure-widgets.md) クラスの中でアセットバンドルを登録するためには、`$this->view` によってビューオブジェクトを取得することが出来ます。 例えば、[ウィジェット](structure-widgets.md) クラスの中でアセットバンドルを登録するためには、`$this->view` によってビューオブジェクトを取得することが出来ます。
...@@ -236,8 +227,7 @@ AppAsset::register($this); // $this 縺ッ繝薙Η繝シ繧ェ繝悶ず繧ァ繧ッ繝医r陦ィ縺 ...@@ -236,8 +227,7 @@ AppAsset::register($this); // $this 縺ッ繝薙Η繝シ繧ェ繝悶ず繧ァ繧ッ繝医r陦ィ縺
### アセットバンドルをカスタマイズする <span id="customizing-asset-bundles"></span> ### アセットバンドルをカスタマイズする <span id="customizing-asset-bundles"></span>
Yii は、[[yii\web\AssetManager]] によって実装されている `assetManager` という名前のアプリケーションコンポーネントを通じてアセットバンドルを管理します。 Yii は、[[yii\web\AssetManager]] によって実装されている `assetManager` という名前のアプリケーションコンポーネントを通じてアセットバンドルを管理します。
[[yii\web\AssetManager::bundles]] プロパティを構成することによって、アセットバンドルの振る舞いを [[yii\web\AssetManager::bundles]] プロパティを構成することによって、アセットバンドルの振る舞いをカスタマイズすることが出来ます。
カスタマイズすることが出来ます。
例えば、デフォルトの [[yii\web\JqueryAsset]] アセットバンドルはインストールされた jQuery の Bower パッケージにある `jquery.js` ファイルを使用します。 例えば、デフォルトの [[yii\web\JqueryAsset]] アセットバンドルはインストールされた jQuery の Bower パッケージにある `jquery.js` ファイルを使用します。
あなたは、可用性とパフォーマンスを向上させるために、Google によってホストされたバージョンを使いたいと思うかも知れません。 あなたは、可用性とパフォーマンスを向上させるために、Google によってホストされたバージョンを使いたいと思うかも知れません。
次のように、アプリケーションの構成情報で `assetManager` を構成することによって、それが達成できます。 次のように、アプリケーションの構成情報で `assetManager` を構成することによって、それが達成できます。
...@@ -460,8 +450,8 @@ HTTP 繝ェ繧ッ繧ィ繧ケ繝医謨ー縺ィ縺薙l繧峨繝輔ぃ繧、繝ォ縺ョ蜈ィ菴薙→縺励※縺ョ繝繧ヲ ...@@ -460,8 +450,8 @@ HTTP 繝ェ繧ッ繧ィ繧ケ繝医謨ー縺ィ縺薙l繧峨繝輔ぃ繧、繝ォ縺ョ蜈ィ菴薙→縺励※縺ョ繝繧ヲ
上記の方法をさらに説明するために一つの例を挙げましょう。 上記の方法をさらに説明するために一つの例を挙げましょう。
あなたのアプリケーションが二つのページ、X と Y を持つと仮定します。ページ X はアセットバンドル A、B、C を使用し、 あなたのアプリケーションが二つのページ、X と Y を持つと仮定します。
ページ Y はアセットバンドル B、C、D を使用します。 ページ X はアセットバンドル A、B、C を使用し、ページ Y はアセットバンドル B、C、D を使用します。
これらのアセットバンドルを分割する方法は二つあります。一つは単一のグループを使用して全てのアセットバンドルを含める方法です。 これらのアセットバンドルを分割する方法は二つあります。一つは単一のグループを使用して全てのアセットバンドルを含める方法です。
もう一つは、A をグループ X に入れ、D をグループ Y に入れ、そして、B と C をグループ S に入れる方法です。どちらが良いでしょう? 場合によります。 もう一つは、A をグループ X に入れ、D をグループ Y に入れ、そして、B と C をグループ S に入れる方法です。どちらが良いでしょう? 場合によります。
...@@ -546,7 +536,7 @@ yii asset/template assets.php ...@@ -546,7 +536,7 @@ yii asset/template assets.php
<?php <?php
/** /**
* "yii asset" コンソールコマンドのための構成情報ファイル * "yii asset" コンソールコマンドのための構成情報ファイル
* コンソール環境では、'@webroot' や '@web' のように、パスエイリアスが存在しない場合があることに注意してください。 * コンソール環境では、'@webroot' や '@web' のように、存在しないパスエイリアスがあり得ることに注意してください。
* これらの欠落したパスエイリアスは手作業で定義してください。 * これらの欠落したパスエイリアスは手作業で定義してください。
*/ */
return [ return [
...@@ -585,7 +575,7 @@ JavaScript 繝輔ぃ繧、繝ォ縺ッ邨仙粋縺輔l縲∝悸邵ョ縺輔l縺ヲ `js/all-{hash}.js` 縺ォ ...@@ -585,7 +575,7 @@ JavaScript 繝輔ぃ繧、繝ォ縺ッ邨仙粋縺輔l縲∝悸邵ョ縺輔l縺ヲ `js/all-{hash}.js` 縺ォ
`jsCompressor``cssCompressor` のオプションは、JavaScript と CSS の結合/圧縮を実行するコンソールコマンドまたは PHP コールバックを指定するものです。 `jsCompressor``cssCompressor` のオプションは、JavaScript と CSS の結合/圧縮を実行するコンソールコマンドまたは PHP コールバックを指定するものです。
デフォルトでは、Yii は JavaScript ファイルの結合に [Closure Compiler](https://developers.google.com/closure/compiler/) を使い、CSS ファイルの結合に [YUI Compressor](https://github.com/yui/yuicompressor/) を使用します。 デフォルトでは、Yii は JavaScript ファイルの結合に [Closure Compiler](https://developers.google.com/closure/compiler/) を使い、CSS ファイルの結合に [YUI Compressor](https://github.com/yui/yuicompressor/) を使用します。
あなたの好みのツールを使うためには、手作業でツールをインストールしたり、オプションを調整したりしなければなりません。 あなたの好みのツールを使うためには、手作業でツールをインストールしたり、オプションを修正したりしなければなりません。
この構成情報ファイルを使い、`asset` コマンドを走らせて、アセットファイルを結合して圧縮し、同時に、新しいアセットバンドルの構成情報ファイル `assets-prod.php` を生成することが出来ます。 この構成情報ファイルを使い、`asset` コマンドを走らせて、アセットファイルを結合して圧縮し、同時に、新しいアセットバンドルの構成情報ファイル `assets-prod.php` を生成することが出来ます。
......
...@@ -19,8 +19,8 @@ ...@@ -19,8 +19,8 @@
[Composer](https://getcomposer.org/) を持っていない場合は、それをインストールする必要があることに注意してください。 [Composer](https://getcomposer.org/) を持っていない場合は、それをインストールする必要があることに注意してください。
デフォルトでは、Composer は [Packagist](https://packagist.org/) に登録されたパッケージをインストールします。 デフォルトでは、Composer はオープンソース Composer パッケージの最大のレポジトリである [Packagist](https://packagist.org/) に登録されたパッケージをインストールします。
Packagist はオープンソース Composer パッケージの最大のレポジトリであり、そこでエクステンションを探すことが出来ます。 エクステンションは Packagist で探すことが出来ます。
また、[自分自身のレポジトリを作成](https://getcomposer.org/doc/05-repositories.md#repository) して、それを使うように Composer を構成することも出来ます。 また、[自分自身のレポジトリを作成](https://getcomposer.org/doc/05-repositories.md#repository) して、それを使うように Composer を構成することも出来ます。
これは、あなたがプライベートなエクステンションを開発していて、それを自分のプロジェクト間でのみ共有したい場合に役に立つ方法です。 これは、あなたがプライベートなエクステンションを開発していて、それを自分のプロジェクト間でのみ共有したい場合に役に立つ方法です。
...@@ -50,8 +50,7 @@ Composer 縺ッ萓晏ュ倬未菫ゅr邂。逅☆繧九b縺ョ縺ァ縺吶°繧峨√≠繧九ヱ繝こ繝シ繧 ...@@ -50,8 +50,7 @@ Composer 縺ッ萓晏ュ倬未菫ゅr邂。逅☆繧九b縺ョ縺ァ縺吶°繧峨√≠繧九ヱ繝こ繝シ繧
ここで `xyz` はエクステンションによってさまざまに変ります。 ここで `xyz` はエクステンションによってさまざまに変ります。
これであなたはインストールされたエクステンションをあなたのアプリケーションの一部であるかのように使うことが出来ます。 これであなたはインストールされたエクステンションをあなたのアプリケーションの一部であるかのように使うことが出来ます。
次の例は、`yiisoft/yii2-imagine` エクステンションによって提供される `yii\imagine\Image` クラスをどのようにして使うことが 次の例は、`yiisoft/yii2-imagine` エクステンションによって提供される `yii\imagine\Image` クラスをどのようにして使うことが出来るかを示すものです。
出来るかを示すものです。
```php ```php
use Yii; use Yii;
...@@ -74,12 +73,11 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) ...@@ -74,12 +73,11 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120)
2. もし有れば、エクステンションによって提供されているクラスオートローダをインストールする。 2. もし有れば、エクステンションによって提供されているクラスオートローダをインストールする。
3. 指示に従って、依存するエクステンションを全てダウンロードしインストールする。 3. 指示に従って、依存するエクステンションを全てダウンロードしインストールする。
エクステンションがクラスオートローダを持っていなくても、[PSR-4 標準](http://www.php-fig.org/psr/psr-4/) エクステンションがクラスオートローダを持っていなくても、[PSR-4 標準](http://www.php-fig.org/psr/psr-4/) に従っている場合は、Yii によって提供されているクラスオートローダを使ってエクステンションのクラスをオートロードすることが出来ます。
に従っている場合は、Yii によって提供されているクラスオートローダを使ってエクステンションのクラスをオートロードすることが出来ます。
必要なことは、エクステンションのルートディレクトリのための [ルートエイリアス](concept-aliases.md#defining-aliases) を宣言することだけです。 必要なことは、エクステンションのルートディレクトリのための [ルートエイリアス](concept-aliases.md#defining-aliases) を宣言することだけです。
例えば、エクステンションを `vendor/mycompany/myext` というディレクトリにインストールしたと仮定します。 例えば、エクステンションを `vendor/mycompany/myext` というディレクトリにインストールしたと仮定します。
そして、エクステンションのクラスは `myext` 名前空間の下にあるとします。 そして、エクステンションのクラスは `myext` 名前空間の下にあるとします。
その場合、アプリケーションのコンフィギュレーションに下記のコードを含めれば良いのです。 その場合、アプリケーションの構成情報に下記のコードを含めます。
```php ```php
[ [
...@@ -101,7 +99,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) ...@@ -101,7 +99,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120)
以下は、エクステンションを Composer のパッケージとして作成するために踏む基本的なステップです。 以下は、エクステンションを Composer のパッケージとして作成するために踏む基本的なステップです。
1. エクステンションのためのプロジェクトを作成して、[github.com](https://github.com) などの VCS レポジトリ上でホストします。 1. エクステンションのためのプロジェクトを作成して、[github.com](https://github.com) などの VCS レポジトリ上でホストします。
エクステンションに関する開発と保守の作業はこのレポジトリ上でなされなければならない。 エクステンションに関する開発と保守の作業はこのレポジトリ上でしなければなりません。
2. プロジェクトのルートディレクトリに、Composer によって要求される `composer.json` という名前のファイルを作成します。 2. プロジェクトのルートディレクトリに、Composer によって要求される `composer.json` という名前のファイルを作成します。
詳細については、次の項を参照してください。 詳細については、次の項を参照してください。
3. エクステンションを [Packagist](https://packagist.org/) などの Composer レポジトリに登録します。 3. エクステンションを [Packagist](https://packagist.org/) などの Composer レポジトリに登録します。
...@@ -158,7 +156,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) ...@@ -158,7 +156,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120)
#### パッケージ名 <span id="package-name"></span> #### パッケージ名 <span id="package-name"></span>
全ての Composer パッケージは、他の全てパッケージに対して唯一のものとして特定できるような名前を持たなければなりません。 全ての Composer パッケージは、他の全てパッケージと異なる一意に特定できる名前を持たなければなりません。
パッケージ名の形式は `vendorName/projectName` です。 パッケージ名の形式は `vendorName/projectName` です。
例えば、`yiisoft/yii2-imagine` というパッケージ名の中では、ベンダー名とプロジェクト名は、それぞれ、`yiisoft``yii2-imagine` です。 例えば、`yiisoft/yii2-imagine` というパッケージ名の中では、ベンダー名とプロジェクト名は、それぞれ、`yiisoft``yii2-imagine` です。
...@@ -173,8 +171,8 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) ...@@ -173,8 +171,8 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120)
パッケージがインストールされたときに Yii のエクステンションとして認識されるように、エクステンションのパッケージタイプを `yii2-extension` と指定することは重要なことです。 パッケージがインストールされたときに Yii のエクステンションとして認識されるように、エクステンションのパッケージタイプを `yii2-extension` と指定することは重要なことです。
ユーザが `composer install` を走らせてエクステンションをインストールすると、`vendor/yiisoft/extensions.php` というファイルが自動的に更新されて、新しいエクステンションに関する情報を含むようになります。 ユーザが `composer install` を走らせてエクステンションをインストールすると、`vendor/yiisoft/extensions.php` というファイルが自動的に更新されて、新しいエクステンションに関する情報を含むようになります。
このファイルから、Yii のアプリケーションはどんなエクステンションがインストールされているかを知ることが出来ます Yii のアプリケーションは、このファイルによって、どんなエクステンションがインストールされているかを知ることが出来ます
(その情報には、[[yii\base\Application::extensions]] を通じてアクセス出来ます)。 (その情報には、[[yii\base\Application::extensions]] を通じてアクセスすることが出来ます)。
#### 依存パッケージ <span id="dependencies"></span> #### 依存パッケージ <span id="dependencies"></span>
...@@ -237,8 +235,7 @@ Composer 縺 Bower 縺セ縺溘 NPM 縺ョ繝代ャ繧ア繝シ繧ク繧偵う繝ウ繧ケ繝医繝ォ縺吶k蝣 ...@@ -237,8 +235,7 @@ Composer 縺 Bower 縺セ縺溘 NPM 縺ョ繝代ャ繧ア繝シ繧ク繧偵う繝ウ繧ケ繝医繝ォ縺吶k蝣
#### 名前空間 <span id="namespaces"></span> #### 名前空間 <span id="namespaces"></span>
名前の衝突を避けて、エクステンションの中のクラスをオートロード可能にするために、名前空間を使うべきであり、エクステンションの中のクラスに 名前の衝突を避けて、エクステンションの中のクラスをオートロード可能にするために、名前空間を使うべきであり、エクステンションの中のクラスには [PSR-4 標準](http://www.php-fig.org/psr/psr-4/) または [PSR-0 標準](http://www.php-fig.org/psr/psr-0/) に従った名前を付けるべきです。
[PSR-4 標準](http://www.php-fig.org/psr/psr-4/) または [PSR-0 標準](http://www.php-fig.org/psr/psr-0/) に従った名前を付けるべきです。
あなたのクラスの名前空間は `vendorName\extensionName` で始まるべきです。 あなたのクラスの名前空間は `vendorName\extensionName` で始まるべきです。
ここで `extensionName` は、`yii2-` という接頭辞を含むべきでないことを除けば、パッケージ名におけるプロジェクト名と同じものです。 ここで `extensionName` は、`yii2-` という接頭辞を含むべきでないことを除けば、パッケージ名におけるプロジェクト名と同じものです。
...@@ -285,8 +282,7 @@ class MyBootstrapClass implements BootstrapInterface ...@@ -285,8 +282,7 @@ class MyBootstrapClass implements BootstrapInterface
} }
``` ```
このエクステンションがアプリケーションにインストールされると、すべてのリクエストのブートストラップの過程において、毎回、Yii このエクステンションがアプリケーションにインストールされると、すべてのリクエストのブートストラップの過程において、毎回、Yii が自動的にブートストラップクラスのインスタンスを作成し、その [[yii\base\BootstrapInterface::bootstrap()|bootstrap()]] メソッドを呼びます。
が自動的にブートストラップクラスのインスタンスを作成し、その [[yii\base\BootstrapInterface::bootstrap()|bootstrap()]] メソッドを呼びます。
#### データベースを扱う <span id="working-with-databases"></span> #### データベースを扱う <span id="working-with-databases"></span>
...@@ -300,21 +296,21 @@ class MyBootstrapClass implements BootstrapInterface ...@@ -300,21 +296,21 @@ class MyBootstrapClass implements BootstrapInterface
あなたのエクステンションが特定の DB テーブルを作成したり、DB スキーマを変更したりする必要がある場合は、次のようにするべきです。 あなたのエクステンションが特定の DB テーブルを作成したり、DB スキーマを変更したりする必要がある場合は、次のようにするべきです。
- DB スキーマを操作するために、平文の SQL ファイルを使うのではなく、[マイグレーション](db-migrations.md) を提供する。 - DB スキーマを操作するために、平文の SQL ファイルを使うのではなく、[マイグレーション](db-migrations.md) を提供する。
- マイグレーションをさまざまな DBMS に適用可能なものするように努める。 - マイグレーションがさまざまな DBMS に適用可能なものになるように試みる。
- マイグレーションの中では [アクティブレコード](db-active-record.md) の使用を避ける。 - マイグレーションの中では [アクティブレコード](db-active-record.md) の使用を避ける。
#### アセットを使う <span id="using-assets"></span> #### アセットを使う <span id="using-assets"></span>
あなたのエクステンションがウィジェットかモジュールである場合は、動作するために何らかの [アセット](structure-assets.md) が必要である可能性が高いでしょう。 あなたのエクステンションがウィジェットかモジュールである場合は、動作するために何らかの [アセット](structure-assets.md) が必要である可能性が高いでしょう。
例えば、モジュールは、画像、JavaScript、そして CSS を含むページをいくつか表示するでしょう。 例えば、モジュールは、画像、JavaScript、そして CSS を含むページを表示することがあるでしょう
クステンションのファイルは、全て、アプリケーションにインストールされるときに、ウェブからアクセス出来ない同じディレクトリの下に配置されます。 プリケーションにインストールされるときに、エクステンションの全てのファイルは同じディレクトリの下に配置されますが、そのディレクトリはウェブからはアクセス出来ないものです。
そのため、次のどちらかの方法を使って、アセットファイルをウェブから直接アクセス出来るようにしなければなりません。 そのため、次のどちらかの方法を使って、アセットファイルをウェブから直接アクセス出来るようにしなければなりません。
- アセットファイルをウェブからアクセス出来る特定のフォルダに手作業でコピーするように、エクステンションのユーザにお願いする。 - アセットファイルをウェブからアクセス出来る特定のフォルダに手作業でコピーするように、エクステンションのユーザに要求する。
- [アセットバンドル](structure-assets.md) を宣言し、アセット発行メカニズムに頼って、アセットバンドルにリストされているファイルをウェブからアクセス出来るフォルダに自動的にコピーする。 - [アセットバンドル](structure-assets.md) を宣言し、アセット発行メカニズムに頼って、アセットバンドルにリストされているファイルをウェブからアクセス出来るフォルダに自動的にコピーする。
あなたのエクステンションが他の人々にとってより一層使いやすいものになるように、第二の方法をとることを推奨します。 あなたのエクステンションが他の人々にとって一層使いやすいものになるように、第二の方法をとることを推奨します。
アセットの取り扱い一般に関する詳細は [アセット](structure-assets.md) の節を参照してください。 アセットの取り扱い一般に関する詳細は [アセット](structure-assets.md) の節を参照してください。
...@@ -324,7 +320,7 @@ class MyBootstrapClass implements BootstrapInterface ...@@ -324,7 +320,7 @@ class MyBootstrapClass implements BootstrapInterface
従って、あなたのエクステンションがエンドユーザにコンテントを表示するものである場合は、それを [国際化](tutorial-i18n.md) するように努めるべきです。 従って、あなたのエクステンションがエンドユーザにコンテントを表示するものである場合は、それを [国際化](tutorial-i18n.md) するように努めるべきです。
具体的には、 具体的には、
- エクステンションがエンドユーザに向けたメッセージを表示する場合は、翻訳することが出来るようにメッセージを `Yii::t()` で包むべきです。 - エクステンションがエンドユーザに向けたメッセージを表示する場合は、翻訳することが出来るようにメッセージを `Yii::t()` で囲むべきです。
開発者に向けられたメッセージ (内部的な例外のメッセージなど) は翻訳される必要はありません。 開発者に向けられたメッセージ (内部的な例外のメッセージなど) は翻訳される必要はありません。
- エクステンションが数値や日付などを表示する場合は、[[yii\i18n\Formatter]] を適切な書式化の規則とともに使って書式設定すべきです。 - エクステンションが数値や日付などを表示する場合は、[[yii\i18n\Formatter]] を適切な書式化の規則とともに使って書式設定すべきです。
...@@ -337,8 +333,8 @@ class MyBootstrapClass implements BootstrapInterface ...@@ -337,8 +333,8 @@ class MyBootstrapClass implements BootstrapInterface
この目的を達するためには、あなたのエクステンションを公開する前にテストすべきです。 この目的を達するためには、あなたのエクステンションを公開する前にテストすべきです。
手作業のテストに頼るのではなく、あなたのエクステンションのコードをカバーするさまざまなテストケースを作成することが推奨されます。 手作業のテストに頼るのではなく、あなたのエクステンションのコードをカバーするさまざまなテストケースを作成することが推奨されます。
あなたのエクステンションの新しいバージョンを公開する前には、毎回、単にそれらのテストケースを走らせれば、全てが良い状態にあることを確認することが出来ます。 あなたのエクステンションの新しいバージョンを公開する前には、毎回、それらのテストケースを走らせるだけで、全てが良い状態にあることを確認することが出来ます。
Yii はテストのサポートを提供しており、それよって、ユニットテスト、機能テスト、承認テストを書くことが一層簡単に出来るようになっています。 Yii はテストのサポートを提供しており、それよって、単体テスト、機能テスト、承認テストを書くことが一層簡単に出来るようになっています。
詳細については、[テスト](test-overview.md) の節を参照してください。 詳細については、[テスト](test-overview.md) の節を参照してください。
...@@ -368,7 +364,8 @@ Yii 縺ッ繝せ繝医繧オ繝昴繝医r謠蝉セ帙@縺ヲ縺翫j縲√◎繧後h縺」縺ヲ縲√Θ繝九 ...@@ -368,7 +364,8 @@ Yii 縺ッ繝せ繝医繧オ繝昴繝医r謠蝉セ帙@縺ヲ縺翫j縲√◎繧後h縺」縺ヲ縲√Θ繝九
* API ドキュメント: あなたのコードは、他の人々が読んで理解することがより一層容易に出来るように、十分な解説を含むべきです。 * API ドキュメント: あなたのコードは、他の人々が読んで理解することがより一層容易に出来るように、十分な解説を含むべきです。
[Object のクラスファイル](https://github.com/yiisoft/yii2/blob/master/framework/base/Object.php) を参照すると、コードに解説を加える方法を学ぶことが出来ます。 [Object のクラスファイル](https://github.com/yiisoft/yii2/blob/master/framework/base/Object.php) を参照すると、コードに解説を加える方法を学ぶことが出来ます。
> Info|情報: コードのコメントを Markdown 形式で書くことが出来ます。`yiisoft/yii2-apidoc` エクステンションは、コードのコメントに基づいて綺麗な API ドキュメントを生成するツールを提供しています。 > Info|情報: コードのコメントを Markdown 形式で書くことが出来ます。
`yiisoft/yii2-apidoc` エクステンションが、コードのコメントに基づいて綺麗な API ドキュメントを生成するツールを提供しています。
> Info|情報: これは要求ではありませんが、あなたのエクステンションも一定のコーディングスタイルを守るのが良いと思います。 > Info|情報: これは要求ではありませんが、あなたのエクステンションも一定のコーディングスタイルを守るのが良いと思います。
[コアフレームワークコードスタイル](https://github.com/yiisoft/yii2/wiki/Core-framework-code-style) を参照してください。 [コアフレームワークコードスタイル](https://github.com/yiisoft/yii2/wiki/Core-framework-code-style) を参照してください。
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment