diff --git a/docs/guide-ja/README.md b/docs/guide-ja/README.md index 9990cc7..d7756d0 100644 --- a/docs/guide-ja/README.md +++ b/docs/guide-ja/README.md @@ -77,9 +77,9 @@ All Rights Reserved. * [データベース・アクセス・オブジェクト](db-dao.md): データベースへの接続、基本的なクエリ、トランザクション、および、スキーマ操作 * [クエリ・ビルダ](db-query-builder.md): シンプルな抽象レイヤを使ってデータベースに対してクエリを行う -* [アクティブレコード](db-active-record.md): アクティブレコード ORM、レコードの読み出しと操作、リレーションの定義 +* [アクティブ・レコード](db-active-record.md): アクティブ・レコード ORM、レコードの読み出しと操作、リレーションの定義 * [マイグレーション](db-migrations.md): チーム開発環境においてデータベースにバージョン・コントロールを適用 -* [Sphinx](https://yiiframework.com/extension/yiisoft/yii2-sphinx/doc/guide) +* [Sphinx](https://www.yiiframework.com/extension/yiisoft/yii2-sphinx/doc/guide) * [Redis](https://www.yiiframework.com/extension/yiisoft/yii2-redis/doc/guide) * [MongoDB](https://www.yiiframework.com/extension/yiisoft/yii2-mongodb/doc/guide) * [ElasticSearch](https://www.yiiframework.com/extension/yiisoft/yii2-elasticsearch/doc/guide) @@ -130,8 +130,8 @@ All Rights Reserved. * [HTTP キャッシュ](caching-http.md) -RESTful ウェブサービス ----------------------- +RESTful ウェブ・サービス +------------------------ * [クイック・スタート](rest-quick-start.md) * [リソース](rest-resources.md) @@ -182,14 +182,14 @@ RESTful ウェブサービス ウィジェット ------------ -* [GridView](http://www.yiiframework.com/doc-2.0/yii-grid-gridview.html) -* [ListView](http://www.yiiframework.com/doc-2.0/yii-widgets-listview.html) -* [DetailView](http://www.yiiframework.com/doc-2.0/yii-widgets-detailview.html) -* [ActiveForm](http://www.yiiframework.com/doc-2.0/guide-input-forms.html#activerecord-based-forms-activeform) -* [Pjax](http://www.yiiframework.com/doc-2.0/yii-widgets-pjax.html) -* [Menu](http://www.yiiframework.com/doc-2.0/yii-widgets-menu.html) -* [LinkPager](http://www.yiiframework.com/doc-2.0/yii-widgets-linkpager.html) -* [LinkSorter](http://www.yiiframework.com/doc-2.0/yii-widgets-linksorter.html) +* [[yii\grid\GridView|GridView]] +* [[yii\widgets\ListView|ListView]] +* [[yii\widgets\DetailView|DetailView]] +* [[yii\widgets\ActiveForm|ActiveForm]] +* [[yii\widgets\Pjax|Pjax]] +* [[yii\widgets\Menu|Menu]] +* [[yii\widgets\LinkPager|LinkPager]] +* [[yii\widgets\LinkSorter|LinkSorter]] * [Bootstrap ウィジェット](https://www.yiiframework.com/extension/yiisoft/yii2-bootstrap/doc/guide) * [jQuery UI ウィジェット](https://www.yiiframework.com/extension/yiisoft/yii2-jui/doc/guide) diff --git a/docs/guide-ja/caching-data.md b/docs/guide-ja/caching-data.md index 95f2065..16f1792 100644 --- a/docs/guide-ja/caching-data.md +++ b/docs/guide-ja/caching-data.md @@ -267,7 +267,7 @@ $result = $db->cache(function ($db) { }); ``` -クエリ・キャッシュは [DAO](db-dao.md) だけではなく [アクティブレコード](db-active-record.md) でも使用することができます。 +クエリ・キャッシュは [DAO](db-dao.md) だけではなく [アクティブ・レコード](db-active-record.md) でも使用することができます。 ```php $result = Customer::getDb()->cache(function ($db) { diff --git a/docs/guide-ja/concept-behaviors.md b/docs/guide-ja/concept-behaviors.md index 9298eda..e7c84d9 100644 --- a/docs/guide-ja/concept-behaviors.md +++ b/docs/guide-ja/concept-behaviors.md @@ -251,10 +251,10 @@ $component->detachBehaviors(); ------------------------------ しめくくりに、[[yii\behaviors\TimestampBehavior]] を見てみましょう。このビヘイビアは、 -`insert()`、`update()` または `save()` のメソッドを通じて [[yii\db\ActiveRecord|アクティブレコード]] モデルが保存されるときに、 +`insert()`、`update()` または `save()` のメソッドを通じて [[yii\db\ActiveRecord|アクティブ・レコード]] モデルが保存されるときに、 タイムスタンプ属性の自動的な更新をサポートします。 -まず、使用しようと考えている [[yii\db\ActiveRecord|アクティブレコード]] クラスに、このビヘイビアをアタッチします: +まず、使用しようと考えている [[yii\db\ActiveRecord|アクティブ・レコード]] クラスに、このビヘイビアをアタッチします: ```php namespace app\models\User; diff --git a/docs/guide-ja/concept-components.md b/docs/guide-ja/concept-components.md index 41e061f..511ebe2 100644 --- a/docs/guide-ja/concept-components.md +++ b/docs/guide-ja/concept-components.md @@ -80,7 +80,7 @@ $component = \Yii::createObject([ > Note: [[Yii::createObject()]] を呼び出すアプローチは複雑に見えますが、より強力です。というのも、それが [依存性注入コンテナ](concept-di-container.md) 上に実装されているからです。 -[[yii\base\BaseObject]] クラスには、次のオブジェクト・ライフ・サイクルが適用されます: +[[yii\base\BaseObject]] クラスには、次のオブジェクト・ライフサイクルが適用されます: 1. コンストラクタ内の事前初期化。ここでデフォルトのプロパティ値を設定することができます。 2. `$config` によるオブジェクトの構成。構成情報は、コンストラクタ内で設定されたデフォルト値を上書きすることがあります。 diff --git a/docs/guide-ja/concept-configurations.md b/docs/guide-ja/concept-configurations.md index 9d52f6a..25d4621 100644 --- a/docs/guide-ja/concept-configurations.md +++ b/docs/guide-ja/concept-configurations.md @@ -77,7 +77,7 @@ Yii::configure($object, $config); ## 構成情報を使用する 構成情報は Yii の多くの場所で使用されています。このセクションの冒頭では、 [[Yii::createObject()]] -を使って、構成情報に応じてオブジェクトを作成する方法を示しました。このサブ・セクションでは、 +を使って、構成情報に応じてオブジェクトを作成する方法を示しました。この項では、 アプリケーションの構成とウィジェットの構成という、2つの主要な構成情報の用途を説明します。 diff --git a/docs/guide-ja/concept-di-container.md b/docs/guide-ja/concept-di-container.md index cb9edbd..e26085e 100644 --- a/docs/guide-ja/concept-di-container.md +++ b/docs/guide-ja/concept-di-container.md @@ -41,7 +41,7 @@ $foo = new Foo($bar); ### メソッド・インジェクション -通常、クラスの依存はコンストラクタに渡されて、そのクラスの内部でライフ・サイクル全体にわたって利用可能になります。 +通常、クラスの依存はコンストラクタに渡されて、そのクラスの内部でライフサイクル全体にわたって利用可能になります。 メソッド・インジェクションを使うと、クラスのメソッドの一つだけに必要となる依存、例えば、コンストラクタに渡すことが不可能であったり、大半のユースケースにおいてはオーバーヘッドが大きすぎるような依存を提供することが可能になります。 クラスのメソッドを次の例の `doSomething` メソッドのように定義することが出来ます。 diff --git a/docs/guide-ja/concept-events.md b/docs/guide-ja/concept-events.md index d4b6249..3f61e59 100644 --- a/docs/guide-ja/concept-events.md +++ b/docs/guide-ja/concept-events.md @@ -199,9 +199,9 @@ $foo->off(Foo::EVENT_HELLO); イベントに応答したいことがあります。すべてのインスタンスにイベント・ハンドラをアタッチする代わりに、静的メソッド [[yii\base\Event::on()]] を呼び出すことで、 *クラス・レベル* でハンドラをアタッチすることができます。 -たとえば、[アクティブレコード](db-active-record.md) オブジェクトは、データベースに新しいレコードを挿入するたびに、 +たとえば、[アクティブ・レコード](db-active-record.md) オブジェクトは、データベースに新しいレコードを挿入するたびに、 [[yii\db\BaseActiveRecord::EVENT_AFTER_INSERT|EVENT_AFTER_INSERT]] イベントをトリガします。 *すべての* -[アクティブレコード](db-active-record.md) オブジェクトによって行われる挿入を追跡するには、次のコードが使えます: +[アクティブ・レコード](db-active-record.md) オブジェクトによって行われる挿入を追跡するには、次のコードが使えます: ```php use Yii; diff --git a/docs/guide-ja/db-active-record.md b/docs/guide-ja/db-active-record.md index b3d0489..68a4f80 100644 --- a/docs/guide-ja/db-active-record.md +++ b/docs/guide-ja/db-active-record.md @@ -1,12 +1,12 @@ -アクティブレコード -================== +アクティブ・レコード +==================== -[アクティブレコード](http://ja.wikipedia.org/wiki/Active_Record) は、データベースに保存されているデータにアクセスするために、オブジェクト指向のインタフェイスを提供するものです。 -アクティブレコード・クラスはデータベース・テーブルと関連付けられます。 -アクティブレコードのインスタンスはそのテーブルの行に対応し、アクティブレコードのインスタンスの *属性* がその行にある特定のカラムの値を表現します。 -生の SQL 文を書く代りに、アクティブレコードの属性にアクセスしたり、アクティブレコードのメソッドを呼んだりして、データベース・テーブルに保存さているデータにアクセスしたり、データを操作したりします。 +[アクティブ・レコード](http://ja.wikipedia.org/wiki/Active_Record) は、データベースに保存されているデータにアクセスするために、オブジェクト指向のインタフェイスを提供するものです。 +アクティブ・レコード・クラスはデータベース・テーブルと関連付けられます。 +アクティブ・レコードのインスタンスはそのテーブルの行に対応し、アクティブ・レコードのインスタンスの *属性* がその行にある特定のカラムの値を表現します。 +生の SQL 文を書く代りに、アクティブ・レコードの属性にアクセスしたり、アクティブ・レコードのメソッドを呼んだりして、データベース・テーブルに保存さているデータにアクセスしたり、データを操作したりします。 -例えば、`Customer` が `customer` テーブルに関連付けられたアクティブレコード・クラスであり、`name` が `customer` テーブルのカラムであると仮定しましょう。 +例えば、`Customer` が `customer` テーブルに関連付けられたアクティブ・レコード・クラスであり、`name` が `customer` テーブルのカラムであると仮定しましょう。 `customer` テーブルに新しい行を挿入するために次のコードを書くことが出来ます。 ```php @@ -24,7 +24,7 @@ $db->createCommand('INSERT INTO `customer` (`name`) VALUES (:name)', [ ])->execute(); ``` -Yii は次のリレーショナル・データベースに対して、アクティブレコードのサポートを提供しています。 +Yii は次のリレーショナル・データベースに対して、アクティブ・レコードのサポートを提供しています。 * MySQL 4.1 以降: [[yii\db\ActiveRecord]] による。 * PostgreSQL 7.3 以降: [[yii\db\ActiveRecord]] による。 @@ -36,22 +36,22 @@ Yii は次のリレーショナル・データベースに対して、アクテ * Sphinx: [[yii\sphinx\ActiveRecord]] による。`yii2-sphinx` エクステンションが必要。 * ElasticSearch: [[yii\elasticsearch\ActiveRecord]] による。`yii2-elasticsearch` エクステンションが必要。 -これらに加えて、Yii は次の NoSQL データベースに対しても、アクティブレコードの使用をサポートしています。 +これらに加えて、Yii は次の NoSQL データベースに対しても、アクティブ・レコードの使用をサポートしています。 * Redis 2.6.12 以降: [[yii\redis\ActiveRecord]] による。`yii2-redis` エクステンションが必要。 * MongoDB 1.3.0 以降: [[yii\mongodb\ActiveRecord]] による。`yii2-mongodb` エクステンションが必要。 -このチュートリアルでは、主としてリレーショナル・データベースのためのアクティブレコードの使用方法を説明します。 -しかし、ここで説明するほとんどの内容は NoSQL データベースのためのアクティブレコードにも適用することが出来るものです。 +このチュートリアルでは、主としてリレーショナル・データベースのためのアクティブ・レコードの使用方法を説明します。 +しかし、ここで説明するほとんどの内容は NoSQL データベースのためのアクティブ・レコードにも適用することが出来るものです。 -## アクティブレコード・クラスを宣言する +## アクティブ・レコード・クラスを宣言する -まずは、[[yii\db\ActiveRecord]] を拡張してアクティブレコード・クラスを宣言するところから始めましょう。 +まずは、[[yii\db\ActiveRecord]] を拡張してアクティブ・レコード・クラスを宣言するところから始めましょう。 ### テーブル名を設定する -デフォルトでは、すべてのアクティブレコード・クラスはデータベース・テーブルと関連付けられます。 +デフォルトでは、すべてのアクティブ・レコード・クラスはデータベース・テーブルと関連付けられます。 [[yii\db\ActiveRecord::tableName()|tableName()]] メソッドが、クラス名を [[yii\helpers\Inflector::camel2id()]] によって変換して、テーブル名を返します。 テーブル名がこの規約に従っていない場合は、このメソッドをオーバライドすることが出来ます。 @@ -62,7 +62,7 @@ Yii は次のリレーショナル・データベースに対して、アクテ 例えば、`{{%post}}` は `{{tbl_post}}` となります。 テーブル名を囲む二重波括弧は、[テーブル名を囲む引用符号](db-dao.md#quoting-table-and-column-names) となります。 -次の例では、`customer` というデータベース・テーブルのための `Customer` という名前のアクティブレコード・クラスを宣言しています。 +次の例では、`customer` というデータベース・テーブルのための `Customer` という名前のアクティブ・レコード・クラスを宣言しています。 ```php namespace app\models; @@ -75,7 +75,7 @@ class Customer extends ActiveRecord const STATUS_ACTIVE = 1; /** - * @return string このアクティブレコード・クラスと関連付けられるテーブルの名前 + * @return string このアクティブ・レコード・クラスと関連付けられるテーブルの名前 */ public static function tableName() { @@ -84,17 +84,17 @@ class Customer extends ActiveRecord } ``` -### アクティブレコードは「モデル」と呼ばれる +### アクティブ・レコードは「モデル」と呼ばれる -アクティブレコードのインスタンスは [モデル](structure-models.md) であると見なされます。 -この理由により、私たちは通常 `app\models` 名前空間 (あるいはモデル・クラスを保管するための他の名前空間) の下にアクティブレコード・クラスを置きます。 +アクティブ・レコードのインスタンスは [モデル](structure-models.md) であると見なされます。 +この理由により、私たちは通常 `app\models` 名前空間 (あるいはモデル・クラスを保管するための他の名前空間) の下にアクティブ・レコード・クラスを置きます。 [[yii\db\ActiveRecord]] は [[yii\base\Model]] から拡張していますので、属性、検証規則、データのシリアル化など、[モデル](structure-models.md) が持つ *全ての* 機能を継承しています。 ## データベースに接続する -デフォルトでは、アクティブレコードは、`db` [アプリケーション・コンポーネント](structure-application-components.md) を [[yii\db\Connection|DB 接続]] として使用して、データベースのデータにアクセスしたり操作したりします。 +デフォルトでは、アクティブ・レコードは、`db` [アプリケーション・コンポーネント](structure-application-components.md) を [[yii\db\Connection|DB 接続]] として使用して、データベースのデータにアクセスしたり操作したりします。 [データベース・アクセス・オブジェクト](db-dao.md) で説明したように、次のようにして、アプリケーションの構成情報ファイルの中で `db` コンポーネントを構成することが出来ます。 ```php @@ -127,12 +127,12 @@ class Customer extends ActiveRecord ## データをクエリする -アクティブレコード・クラスを宣言した後、それを使って対応するデータベース・テーブルからデータをクエリすることが出来ます。 +アクティブ・レコード・クラスを宣言した後、それを使って対応するデータベース・テーブルからデータをクエリすることが出来ます。 このプロセスは通常次の三つのステップを踏みます。 1. [[yii\db\ActiveRecord::find()]] メソッドを呼んで、新しいクエリ・オブジェクトを作成する。 2. [クエリ構築メソッド](db-query-builder.md#building-queries) を呼んで、クエリ・オブジェクトを構築する。 -3. [クエリ・メソッド](db-query-builder.md#query-methods) を呼んで、アクティブレコードのインスタンスの形でデータを取得する。 +3. [クエリ・メソッド](db-query-builder.md#query-methods) を呼んで、アクティブ・レコードのインスタンスの形でデータを取得する。 ご覧のように、このプロセスは [クエリ・ビルダ](db-query-builder.md) による手続きと非常によく似ています。 唯一の違いは、`new` 演算子を使ってクエリ・オブジェクトを生成する代りに、[[yii\db\ActiveQuery]] クラスであるクエリ・オブジェクトを返す [[yii\db\ActiveRecord::find()]] を呼ぶ、という点です。 @@ -173,8 +173,8 @@ $customers = Customer::find() プライマリ・キーの値や一群のカラムの値でクエリをすることはよく行われる仕事ですので、Yii はこの目的のために、二つのショートカット・メソッドを提供しています。 -- [[yii\db\ActiveRecord::findOne()]]: クエリ結果の最初の行を一つのアクティブレコード・インスタンスに投入して返す。 -- [[yii\db\ActiveRecord::findAll()]]: *全ての* クエリ結果をアクティブレコード・インスタンスの配列に投入して返す。 +- [[yii\db\ActiveRecord::findOne()]]: クエリ結果の最初の行を一つのアクティブ・レコード・インスタンスに投入して返す。 +- [[yii\db\ActiveRecord::findAll()]]: *全ての* クエリ結果をアクティブ・レコード・インスタンスの配列に投入して返す。 どちらのメソッドも、次のパラメータ形式のどれかを取ることが出来ます。 @@ -234,7 +234,7 @@ $customers = Customer::findAll([ あなたのクエリが多数のデータ行を返すかもしれない場合は、パフォーマンスを向上させるために、`limit(1)` を明示的に呼ぶべきです。 例えば `Customer::find()->limit(1)->one()` のように。 -クエリ構築メソッドを使う以外に、生の SQL を書いてデータをクエリして結果をアクティブレコード・オブジェクトに投入することも出来ます。 +クエリ構築メソッドを使う以外に、生の SQL を書いてデータをクエリして結果をアクティブ・レコード・オブジェクトに投入することも出来ます。 そうするためには [[yii\db\ActiveRecord::findBySql()]] メソッドを呼ぶことが出来ます。 ```php @@ -247,9 +247,9 @@ $customers = Customer::findBySql($sql, [':status' => Customer::STATUS_INACTIVE]) ## データにアクセスする -既に述べたように、データベースから取得されたデータはアクティブレコードのインスタンスに投入されます。 -そして、クエリ結果の各行がアクティブレコードの一つのインスタンスに対応します。 -アクティブレコード・インスタンスの属性にアクセスすることによって、カラムの値にアクセスすることが出来ます。 +既に述べたように、データベースから取得されたデータはアクティブ・レコードのインスタンスに投入されます。 +そして、クエリ結果の各行がアクティブ・レコードの一つのインスタンスに対応します。 +アクティブ・レコード・インスタンスの属性にアクセスすることによって、カラムの値にアクセスすることが出来ます。 例えば、 ```php @@ -259,11 +259,11 @@ $id = $customer->id; $email = $customer->email; ``` -> Note: アクティブレコードの属性の名前は、関連付けられたテーブルのカラムの名前に従って、大文字と小文字を区別して名付けられます。 - Yii は、関連付けられたテーブルの全てのカラムに対して、アクティブレコードの属性を自動的に定義します。 +> Note: アクティブ・レコードの属性の名前は、関連付けられたテーブルのカラムの名前に従って、大文字と小文字を区別して名付けられます。 + Yii は、関連付けられたテーブルの全てのカラムに対して、アクティブ・レコードの属性を自動的に定義します。 これらの属性は、すべて、再宣言してはいけません。 -アクティブレコードの属性はテーブルのカラムに従って命名されるため、テーブルのカラム名がアンダースコアで単語を分ける方法で命名されている場合は、`$customer->first_name` のような属性名を使って PHP コードを書くことになります。 +アクティブ・レコードの属性はテーブルのカラムに従って命名されるため、テーブルのカラム名がアンダースコアで単語を分ける方法で命名されている場合は、`$customer->first_name` のような属性名を使って PHP コードを書くことになります。 コード・スタイルの一貫性が気になるのであれば、テーブルのカラム名を (例えば camelCase を使う名前に) 変更しなければなりません。 @@ -271,7 +271,7 @@ $email = $customer->email; 入力または表示されるデータの形式が、データベースにデータを保存するときに使われるものと異なる場合がよくあります。 例えば、データベースでは顧客の誕生日を UNIX タイムスタンプで保存している (まあ、あまり良い設計ではありませんが) けれども、ほとんどの場合において誕生日を `'YYYY/MM/DD'` という形式の文字列として操作したい、というような場合です。 -この目的を達するために、次のように、`Customer` アクティブレコード・クラスにおいて *データ変換* メソッドを定義することが出来ます。 +この目的を達するために、次のように、`Customer` アクティブ・レコード・クラスにおいて *データ変換* メソッドを定義することが出来ます。 ```php class Customer extends ActiveRecord @@ -299,7 +299,7 @@ class Customer extends ActiveRecord ### データを配列に取得する -データをアクティブレコード・オブジェクトの形で取得するのは便利であり柔軟ですが、大きなメモリ使用量を要するために、大量のデータを取得しなければならない場合は、必ずしも望ましい方法ではありません。 +データをアクティブ・レコード・オブジェクトの形で取得するのは便利であり柔軟ですが、大きなメモリ使用量を要するために、大量のデータを取得しなければならない場合は、必ずしも望ましい方法ではありません。 そういう場合は、クエリ・メソッドを実行する前に [[yii\db\ActiveQuery::asArray()|asArray()]] を呼ぶことによって、PHP 配列を使ってデータを取得することが出来ます。 ```php @@ -310,9 +310,9 @@ $customers = Customer::find() ->all(); ``` -> Note: このメソッドはメモリを節約してパフォーマンスを向上させますが、低レベルの DB 抽象レイヤに近いものであり、あなたはアクティブレコードの機能のほとんどを失うことになります。 +> Note: このメソッドはメモリを節約してパフォーマンスを向上させますが、低レベルの DB 抽象レイヤに近いものであり、あなたはアクティブ・レコードの機能のほとんどを失うことになります。 非常に重要な違いが、カラムの値のデータ型に現れます。 - アクティブレコード・インスタンスとしてデータを返す場合、カラムの値は実際のカラムの型に従って自動的に型キャストされます。 + アクティブ・レコード・インスタンスとしてデータを返す場合、カラムの値は実際のカラムの型に従って自動的に型キャストされます。 一方、配列としてデータを返す場合は、実際のカラムの型に関係なく、カラムの値は文字列になります。 なぜなら、何も処理をしない場合の PDO の結果は文字列だからです。 @@ -320,7 +320,7 @@ $customers = Customer::find() ### データをバッチ・モードで取得する [クエリ・ビルダ](db-query-builder.md) において、大量のデータをデータベースから検索する場合に、メモリ使用量を最小化するために *バッチ・クエリ* を使うことが出来るということを説明しました。 -おなじテクニックをアクティブレコードでも使うことが出来ます。 +おなじテクニックをアクティブ・レコードでも使うことが出来ます。 例えば、 ```php @@ -341,10 +341,10 @@ foreach (Customer::find()->with('orders')->each() as $customer) { ## データを保存する -アクティブレコードを使えば、次のステップを踏んで簡単にデータをデータベースに保存することが出来ます。 +アクティブ・レコードを使えば、次のステップを踏んで簡単にデータをデータベースに保存することが出来ます。 -1. アクティブレコードのインスタンスを準備する -2. アクティブレコードの属性に新しい値を割り当てる +1. アクティブ・レコードのインスタンスを準備する +2. アクティブ・レコードの属性に新しい値を割り当てる 3. [[yii\db\ActiveRecord::save()]] を呼んでデータをデータベースに保存する 例えば、 @@ -361,11 +361,11 @@ $customer->email = 'james@newexample.com'; $customer->save(); ``` -[[yii\db\ActiveRecord::save()|save()]] メソッドは、アクティブレコード・インスタンスの状態に従って、データ行を挿入するか、または、更新することが出来ます。 +[[yii\db\ActiveRecord::save()|save()]] メソッドは、アクティブ・レコード・インスタンスの状態に従って、データ行を挿入するか、または、更新することが出来ます。 インスタンスが `new` 演算子によって新しく作成されたものである場合は、[[yii\db\ActiveRecord::save()|save()]] を呼び出すと、新しい行が挿入されます。 インスタンスがクエリ・メソッドの結果である場合は、[[yii\db\ActiveRecord::save()|save()]] を呼び出すと、そのインスタンスと関連付けられた行が更新されます。 -アクティブレコード・インスタンスの二つの状態は、その [[yii\db\ActiveRecord::isNewRecord|isNewRecord]] プロパティの値をチェックすることによって区別することが出来ます。 +アクティブ・レコード・インスタンスの二つの状態は、その [[yii\db\ActiveRecord::isNewRecord|isNewRecord]] プロパティの値をチェックすることによって区別することが出来ます。 下記のように、このプロパティは [[yii\db\ActiveRecord::save()|save()]] によっても内部的に使用されています。 ```php @@ -396,8 +396,8 @@ public function save($runValidation = true, $attributeNames = null) ### 一括代入 -通常の [モデル](structure-models.md) と同じように、アクティブレコードのインスタンスも [一括代入機能](structure-models.md#massive-assignment) を享受することが出来ます。 -この機能を使うと、下記で示されているように、一つの PHP 文で、アクティブレコード・インスタンスの複数の属性に値を割り当てることが出来ます。 +通常の [モデル](structure-models.md) と同じように、アクティブ・レコードのインスタンスも [一括代入機能](structure-models.md#massive-assignment) を享受することが出来ます。 +この機能を使うと、下記で示されているように、一つの PHP 文で、アクティブ・レコード・インスタンスの複数の属性に値を割り当てることが出来ます。 ただし、[安全な属性](structure-models.md#safe-attributes) だけが一括代入が可能であることを記憶しておいてください。 ```php @@ -433,11 +433,11 @@ $post->updateCounters(['view_count' => 1]); ### ダーティな属性 -[[yii\db\ActiveRecord::save()|save()]] を呼んでアクティブレコード・インスタンスを保存すると、*ダーティな属性* だけが保存されます。 +[[yii\db\ActiveRecord::save()|save()]] を呼んでアクティブ・レコード・インスタンスを保存すると、*ダーティな属性* だけが保存されます。 属性は、DB からロードされた後、または、最後に保存された後にその値が変更されると、*ダーティ* であると見なされます。 -ただし、データ検証は、アクティブレコード・インスタンスがダーティな属性を持っているかどうかに関係なく実施されることに注意してください。 +ただし、データ検証は、アクティブ・レコード・インスタンスがダーティな属性を持っているかどうかに関係なく実施されることに注意してください。 -アクティブレコードはダーティな属性のリストを自動的に保守します。 +アクティブ・レコードはダーティな属性のリストを自動的に保守します。 そうするために、一つ前のバージョンの属性値を保持して、最新のバージョンと比較します。 [[yii\db\ActiveRecord::getDirtyAttributes()]] を呼ぶと、現在ダーティである属性を取得することが出来ます。 また、[[yii\db\ActiveRecord::markAttributeDirty()]] を呼んで、ある属性をダーティであると明示的にマークすることも出来ます。 @@ -454,8 +454,8 @@ $post->updateCounters(['view_count' => 1]); ### デフォルト属性値 あなたのテーブルのカラムの中には、データベースでデフォルト値が定義されているものがあるかも知れません。 -そして、場合によっては、アクティブレコード・インスタンスのウェブ・フォームに、そういうデフォルト値をあらかじめ投入したいことがあるでしょう。 -同じデフォルト値を繰り返して書くことを避けるために、[[yii\db\ActiveRecord::loadDefaultValues()|loadDefaultValues()]] を呼んで、DB で定義されたデフォルト値を対応するアクティブレコードの属性に投入することが出来ます。 +そして、場合によっては、アクティブ・レコード・インスタンスのウェブ・フォームに、そういうデフォルト値をあらかじめ投入したいことがあるでしょう。 +同じデフォルト値を繰り返して書くことを避けるために、[[yii\db\ActiveRecord::loadDefaultValues()|loadDefaultValues()]] を呼んで、DB で定義されたデフォルト値を対応するアクティブ・レコードの属性に投入することが出来ます。 ```php $customer = new Customer(); @@ -468,7 +468,7 @@ $customer->loadDefaultValues(); [[yii\db\ActiveRecord]] は、クエリの結果を投入されるときに、[データベース・テーブル・スキーマ](db-dao.md#database-schema) からの情報を使って、自動的な型キャストを実行します。これによって、整数として宣言されているテーブルカラムから取得されるデータを -アクティブレコードのインスタンスでも PHP の integer として投入し、 +アクティブ・レコードのインスタンスでも PHP の integer として投入し、 真偽値として宣言されているデータを boolean として投入することが出来るようになっています。 しかしながら、型キャストのメカニズムには、いくつかの制約があります。 @@ -477,22 +477,22 @@ $customer->loadDefaultValues(); 'unsigned integer' または 'big integer' として宣言されたカラムの値は、64-bit オペレーティングシステムでのみ PHP の integer に変換されます。 32-bit オペレーティングシステムでは、文字列として表されます。 -属性の型キャストは、アクティブレコードのインスタンスにクエリの結果から値を投入するときだけしか実行されないことに注意してください。 +属性の型キャストは、アクティブ・レコードのインスタンスにクエリの結果から値を投入するときだけしか実行されないことに注意してください。 HTTP リクエストから値をロードしたり、プロパティにアクセスして直接に値を設定したりするときには、自動的な変換は行われません。 -また、アクティブレコードのデータ保存のための SQL 文を準備する際にもテーブル・スキーマが使用されて、値が正しい型でクエリにバインドされることを保証します。 -しかし、アクティブレコードのインスタンスの属性値は保存の過程において変換されることはありません。 +また、アクティブ・レコードのデータ保存のための SQL 文を準備する際にもテーブル・スキーマが使用されて、値が正しい型でクエリにバインドされることを保証します。 +しかし、アクティブ・レコードのインスタンスの属性値は保存の過程において変換されることはありません。 -> Tip: アクティブレコードの検証や保存の際の属性型キャストを楽にするために +> Tip: アクティブ・レコードの検証や保存の際の属性型キャストを楽にするために [[yii\behaviors\AttributeTypecastBehavior]] を使うことが出来ます。 -2.0.14 以降、Yii のアクティブレコードは、JSON や多次元配列のような複雑な型をサポートしています。 +2.0.14 以降、Yii のアクティブ・レコードは、JSON や多次元配列のような複雑な型をサポートしています。 #### MySQL および PostgreSQL における JSON データが取得された後、JSON カラムの値は標準的な JSON デコード規則に従って、 自動的に JSON からデコードされます。 -アクティブレコードは、属性値を JSON カラムに保存するために [[yii\db\JsonExpression|JsonExpression]] +アクティブ・レコードは、属性値を JSON カラムに保存するために [[yii\db\JsonExpression|JsonExpression]] オブジェクトを自動的に生成します。このオブジェクトが [クエリ・ビルダ](db-query-builder.md) レベルで JSON 文字列にエンコードされます。 #### PostgreSQL における配列 @@ -501,7 +501,7 @@ HTTP リクエストから値をロードしたり、プロパティにアクセ このオブジェクトは PHP の `ArrayAccess` インタフェイスを実装しているため、これを配列として使うこと事が出来ます。 また、`->getValue()` を呼んで配列そのものを取得することも出来ます。 -アクティブレコードは、属性値を配列カラムに保存するために [[yii\db\ArrayExpression|ArrayExpression]] +アクティブ・レコードは、属性値を配列カラムに保存するために [[yii\db\ArrayExpression|ArrayExpression]] オブジェクトを生成します。このオブジェクトが [クエリ・ビルダ](db-query-builder.md) のレベルで配列を表す PgSQL 文字列にエンコードされます。 JSON カラムに対して条件を使用することも出来ます。 @@ -515,7 +515,7 @@ $query->andWhere(['=', 'json', new ArrayExpression(['foo' => 'bar']) ### 複数の行を更新する -上述のメソッドは、すべて、個別のアクティブレコード・インスタンスに対して作用し、個別のテーブル行を挿入したり更新したりするものです。 +上述のメソッドは、すべて、個別のアクティブ・レコード・インスタンスに対して作用し、個別のテーブル行を挿入したり更新したりするものです。 複数の行を同時に更新するためには、代りに、スタティックなメソッドである [[yii\db\ActiveRecord::updateAll()|updateAll()]] を呼ばなければなりません。 ```php @@ -533,7 +533,7 @@ Customer::updateAllCounters(['age' => 1]); ## データを削除する -一行のデータを削除するためには、最初にその行に対応するアクティブレコード・インスタンスを取得して、次に [[yii\db\ActiveRecord::delete()]] メソッドを呼びます。 +一行のデータを削除するためには、最初にその行に対応するアクティブ・レコード・インスタンスを取得して、次に [[yii\db\ActiveRecord::delete()]] メソッドを呼びます。 ```php $customer = Customer::findOne(123); @@ -550,37 +550,37 @@ Customer::deleteAll(['status' => Customer::STATUS_INACTIVE]); なぜなら、条件の指定を間違うと、あなたのテーブルからすべてのデータを完全に消し去ってしまうことになるからです。 -## アクティブレコードのライフ・サイクル +## アクティブ・レコードのライフサイクル -アクティブレコードがさまざまな目的で使用される場合のそれぞれのライフ・サイクルを理解しておくことは重要なことです。 -それぞれのライフ・サイクルにおいては、特定の一続きのメソッドが呼び出されます。 -そして、これらのメソッドをオーバーライドして、ライフ・サイクルをカスタマイズするチャンスを得ることが出来ます。 -また、ライフ・サイクルの中でトリガされる特定のアクティブレコード・イベントに反応して、あなたのカスタム・コードを挿入することも出来ます。 -これらのイベントが特に役に立つのは、アクティブレコードのライフ・サイクルをカスタマイズする必要のあるアクティブレコード・[ビヘイビア](concept-behaviors.md) を開発する際です。 +アクティブ・レコードがさまざまな目的で使用される場合のそれぞれのライフサイクルを理解しておくことは重要なことです。 +それぞれのライフサイクルにおいては、特定の一続きのメソッドが呼び出されます。 +そして、これらのメソッドをオーバーライドして、ライフサイクルをカスタマイズするチャンスを得ることが出来ます。 +また、ライフサイクルの中でトリガされる特定のアクティブ・レコード・イベントに反応して、あなたのカスタム・コードを挿入することも出来ます。 +これらのイベントが特に役に立つのは、アクティブ・レコードのライフサイクルをカスタマイズする必要のあるアクティブ・レコード・[ビヘイビア](concept-behaviors.md) を開発する際です。 -次に、さまざまなアクティブレコードのライフ・サイクルと、そのライフ・サイクルに含まれるメソッドやイベントを要約します。 +次に、さまざまなアクティブ・レコードのライフサイクルと、そのライフサイクルに含まれるメソッドやイベントを要約します。 -### 新しいインスタンスのライフ・サイクル +### 新しいインスタンスのライフサイクル -`new` 演算子によって新しいアクティブレコード・インスタンスを作成する場合は、次のライフ・サイクルを経ます。 +`new` 演算子によって新しいアクティブ・レコード・インスタンスを作成する場合は、次のライフサイクルを経ます。 1. クラスのコンストラクタ。 2. [[yii\db\ActiveRecord::init()|init()]]: [[yii\db\ActiveRecord::EVENT_INIT|EVENT_INIT]] イベントをトリガ。 -### データをクエリする際のライフ・サイクル +### データをクエリする際のライフサイクル -[クエリ・メソッド](#querying-data) のどれか一つによってデータをクエリする場合は、新しくデータを投入されるアクティブレコードは次のライフ・サイクルを経ます。 +[クエリ・メソッド](#querying-data) のどれか一つによってデータをクエリする場合は、新しくデータを投入されるアクティブ・レコードは次のライフサイクルを経ます。 1. クラスのコンストラクタ。 2. [[yii\db\ActiveRecord::init()|init()]]: [[yii\db\ActiveRecord::EVENT_INIT|EVENT_INIT]] イベントをトリガ。 3. [[yii\db\ActiveRecord::afterFind()|afterFind()]]: [[yii\db\ActiveRecord::EVENT_AFTER_FIND|EVENT_AFTER_FIND]] イベントをトリガ。 -### データを保存する際のライフ・サイクル +### データを保存する際のライフサイクル -[[yii\db\ActiveRecord::save()|save()]] を呼んでアクティブレコード・インスタンスを挿入または更新する場合は、次のライフ・サイクルを経ます。 +[[yii\db\ActiveRecord::save()|save()]] を呼んでアクティブ・レコード・インスタンスを挿入または更新する場合は、次のライフサイクルを経ます。 1. [[yii\db\ActiveRecord::beforeValidate()|beforeValidate()]]: [[yii\db\ActiveRecord::EVENT_BEFORE_VALIDATE|EVENT_BEFORE_VALIDATE]] イベントをトリガ。 このメソッドが `false` を返すか、[[yii\base\ModelEvent::isValid]] が `false` であった場合、残りのステップはスキップされる。 @@ -592,9 +592,9 @@ Customer::deleteAll(['status' => Customer::STATUS_INACTIVE]); 6. [[yii\db\ActiveRecord::afterSave()|afterSave()]]: [[yii\db\ActiveRecord::EVENT_AFTER_INSERT|EVENT_AFTER_INSERT]] または [[yii\db\ActiveRecord::EVENT_AFTER_UPDATE|EVENT_AFTER_UPDATE]] イベントをトリガ。 -### データを削除する際のライフ・サイクル +### データを削除する際のライフサイクル -[[yii\db\ActiveRecord::delete()|delete()]] を呼んでアクティブレコード・インスタンスを削除する際は、次のライフ・サイクルを経ます。 +[[yii\db\ActiveRecord::delete()|delete()]] を呼んでアクティブ・レコード・インスタンスを削除する際は、次のライフサイクルを経ます。 1. [[yii\db\ActiveRecord::beforeDelete()|beforeDelete()]]: [[yii\db\ActiveRecord::EVENT_BEFORE_DELETE|EVENT_BEFORE_DELETE]] イベントをトリガ。 このメソッドが `false` を返すか、[[yii\base\ModelEvent::isValid]] が `false` であった場合は、残りのステップはスキップされる。 @@ -602,7 +602,7 @@ Customer::deleteAll(['status' => Customer::STATUS_INACTIVE]); 3. [[yii\db\ActiveRecord::afterDelete()|afterDelete()]]: [[yii\db\ActiveRecord::EVENT_AFTER_DELETE|EVENT_AFTER_DELETE]] イベントをトリガ。 -> Note: 次のメソッドを呼んだ場合は、いずれの場合も、上記のライフ・サイクルのどれかを開始させることはありません。 +> Note: 次のメソッドを呼んだ場合は、いずれの場合も、上記のライフサイクルのどれかを開始させることはありません。 > これらのメソッドは、レコード単位ではなく、データベース上で直接に動作するためです。 > > - [[yii\db\ActiveRecord::updateAll()]] @@ -610,17 +610,17 @@ Customer::deleteAll(['status' => Customer::STATUS_INACTIVE]); > - [[yii\db\ActiveRecord::updateCounters()]] > - [[yii\db\ActiveRecord::updateAllCounters()]] -### データをリフレッシュする際のライフ・サイクル +### データをリフレッシュする際のライフサイクル -[[yii\db\ActiveRecord::refresh()|refresh()]] を呼んでアクティブレコード・インスタンスをリフレッシュする際は、リフレッシュが成功してメソッドが `true` を返すと +[[yii\db\ActiveRecord::refresh()|refresh()]] を呼んでアクティブ・レコード・インスタンスをリフレッシュする際は、リフレッシュが成功してメソッドが `true` を返すと [[yii\db\ActiveRecord::EVENT_AFTER_REFRESH|EVENT_AFTER_REFRESH]] イベントがトリガされます。 ## トランザクションを扱う -アクティブレコードを扱う際には、二つの方法で [トランザクション](db-dao.md#performing-transactions) を処理することができます。 +アクティブ・レコードを扱う際には、二つの方法で [トランザクション](db-dao.md#performing-transactions) を処理することができます。 -最初の方法は、次に示すように、アクティブレコードのメソッドの呼び出しを明示的にトランザクションのブロックで囲む方法です。 +最初の方法は、次に示すように、アクティブ・レコードのメソッドの呼び出しを明示的にトランザクションのブロックで囲む方法です。 ```php $customer = Customer::findOne(123); @@ -696,12 +696,12 @@ class Post extends \yii\db\ActiveRecord 楽観的ロックを使用するためには、次のようにします。 -1. アクティブレコード・クラスと関連付けられている DB テーブルに、各行のバージョン番号を保存するカラムを作成します。 +1. アクティブ・レコード・クラスと関連付けられている DB テーブルに、各行のバージョン番号を保存するカラムを作成します。 カラムは長倍精度整数 (big integer) タイプでなければなりません (MySQL では `BIGINT DEFAULT 0` です)。 2. [[yii\db\ActiveRecord::optimisticLock()]] メソッドをオーバーライドして、このカラムの名前を返すようにします。 3. ユーザ入力を収集するウェブフォームに、更新されるレコードの現在のバージョン番号を保持する隠しフィールドを追加します。 バージョン属性が入力の検証規則を持っており、検証が成功することを確かめてください。 -4. アクティブレコードを使って行の更新を行うコントローラ・アクションにおいて、[[\yii\db\StaleObjectException]] 例外を捕捉して、衝突を解決するために必要なビジネス・ロジック (例えば、変更をマージしたり、データの陳腐化を知らせたり) を実装します。 +4. アクティブ・レコードを使って行の更新を行うコントローラ・アクションにおいて、[[\yii\db\StaleObjectException]] 例外を捕捉して、衝突を解決するために必要なビジネス・ロジック (例えば、変更をマージしたり、データの陳腐化を知らせたり) を実装します。 例えば、バージョン番号のカラムが `version` と名付けられているとすると、次のようなコードによって楽観的ロックを実装することが出来ます。 @@ -739,15 +739,15 @@ public function actionUpdate($id) ## リレーショナル・データを扱う -個々のデータベース・テーブルを扱うだけでなく、アクティブレコードは関連したテーブルのデータも一緒に読み出して、主たるデータを通して簡単にアクセス出来るようにすることが出来ます。 +個々のデータベース・テーブルを扱うだけでなく、アクティブ・レコードは関連したテーブルのデータも一緒に読み出して、主たるデータを通して簡単にアクセス出来るようにすることが出来ます。 例えば、一人の顧客は一つまたは複数の注文を発することがあり得ますので、顧客のデータは注文のデータと関連を持っていることになります。 このリレーションが適切に宣言されていれば、`$customer->orders` という式を使って顧客の注文情報にアクセスすることが出来ます。 -`$customer->orders` は、顧客の注文情報を `Order` アクティブレコード・インスタンスの配列として返してくれます。 +`$customer->orders` は、顧客の注文情報を `Order` アクティブ・レコード・インスタンスの配列として返してくれます。 ### リレーションを宣言する -アクティブレコードを使ってリレーショナル・データを扱うためには、最初に、アクティブレコード・クラスの中でリレーションを宣言する必要があります。 +アクティブ・レコードを使ってリレーショナル・データを扱うためには、最初に、アクティブ・レコード・クラスの中でリレーションを宣言する必要があります。 これは、以下のように、関心のあるそれぞれのリレーションについて *リレーション・メソッド* を宣言するだけの簡単な作業です。 ```php @@ -782,11 +782,11 @@ class Order extends ActiveRecord - リレーションの多重性: [[yii\db\ActiveRecord::hasMany()|hasMany()]] または [[yii\db\ActiveRecord::hasOne()|hasOne()]] のどちらかを呼ぶことによって指定されます。 上記の例では、リレーションの宣言において、顧客は複数の注文を持ち得るが、一方、注文は一人の顧客しか持たない、ということが容易に読み取れます。 -- 関連するアクティブレコード・クラスの名前: [[yii\db\ActiveRecord::hasMany()|hasMany()]] または [[yii\db\ActiveRecord::hasOne()|hasOne()]] の最初のパラメータとして指定されます。 +- 関連するアクティブ・レコード・クラスの名前: [[yii\db\ActiveRecord::hasMany()|hasMany()]] または [[yii\db\ActiveRecord::hasOne()|hasOne()]] の最初のパラメータとして指定されます。 クラス名を取得するのに `Xyz::className()` を呼ぶのが推奨されるプラクティスです。 そうすれば、IDE の自動補完のサポートを得ることことが出来るだけでなく、コンパイル段階でエラーを検出することが出来ます。 - 二つのデータタイプ間のリンク: 二つのデータタイプの関連付けに用いられるカラムを指定します。 - 配列の値は主たるデータ (リレーションを宣言しているアクティブレコード・クラスによって表されるデータ) のカラムであり、配列のキーは関連するデータのカラムです。 + 配列の値は主たるデータ (リレーションを宣言しているアクティブ・レコード・クラスによって表されるデータ) のカラムであり、配列のキーは関連するデータのカラムです。 ### リレーショナル・データにアクセスする @@ -808,8 +808,8 @@ $orders = $customer->orders; > Info: `xyz` という名前のリレーションを getter メソッド `getXyz()` によって宣言すると、`xyz` を [オブジェクト・プロパティ](concept-properties.md) のようにアクセスすることが出来るようになります。 名前は大文字と小文字を区別することに注意してください。 -リレーションが [[yii\db\ActiveRecord::hasMany()|hasMany()]] によって宣言されている場合は、このリレーション・プロパティにアクセスすると、関連付けられたアクティブレコード・インスタンスの配列が返されます。 -リレーションが [[yii\db\ActiveRecord::hasOne()|hasOne()]] によって宣言されている場合は、このリレーション・プロパティにアクセスすると、関連付けられたアクティブレコード・インスタンスか、関連付けられたデータが見つからないときは `null` が返されます。 +リレーションが [[yii\db\ActiveRecord::hasMany()|hasMany()]] によって宣言されている場合は、このリレーション・プロパティにアクセスすると、関連付けられたアクティブ・レコード・インスタンスの配列が返されます。 +リレーションが [[yii\db\ActiveRecord::hasOne()|hasOne()]] によって宣言されている場合は、このリレーション・プロパティにアクセスすると、関連付けられたアクティブ・レコード・インスタンスか、関連付けられたデータが見つからないときは `null` が返されます。 リレーション・プロパティに最初にアクセスしたときは、上記の例で示されているように、SQL 文が実行されます。 その同じプロパティに再びアクセスしたときは、SQL 文を再実行することなく、以前の結果が返されます。 @@ -960,7 +960,7 @@ class Customer extends ActiveRecord ### レイジー・ローディングとイーガー・ローディング -[リレーショナル・データにアクセスする](#accessing-relational-data) において、通常のオブジェクト・プロパティにアクセスするのと同じようにして、アクティブレコード・インスタンスのリレーション・プロパティにアクセスすることが出来ることを説明しました。 +[リレーショナル・データにアクセスする](#accessing-relational-data) において、通常のオブジェクト・プロパティにアクセスするのと同じようにして、アクティブ・レコード・インスタンスのリレーション・プロパティにアクセスすることが出来ることを説明しました。 SQL 文は、リレーション・プロパティに最初にアクセスするときにだけ実行されます。 このようなリレーショナル・データのアクセス方法を *レイジー・ローディング* と呼びます。 例えば、 @@ -977,7 +977,7 @@ $orders2 = $customer->orders; ``` レイジー・ローディングは非常に使い勝手が良いものです。 -しかし、複数のアクティブレコード・インスタンスの同じリレーション・プロパティにアクセスする必要がある場合は、パフォーマンスの問題を生じ得ます。 +しかし、複数のアクティブ・レコード・インスタンスの同じリレーション・プロパティにアクセスする必要がある場合は、パフォーマンスの問題を生じ得ます。 次のコードサンプルを考えて見てください。実行される SQL 文の数はいくらになるでしょう? ```php @@ -1009,12 +1009,12 @@ foreach ($customers as $customer) { } ``` -[[yii\db\ActiveQuery::with()]] を呼ぶことによって、最初の 100 人の顧客の注文をたった一つの SQL 文で返すように、アクティブレコードに指示をしています。 +[[yii\db\ActiveQuery::with()]] を呼ぶことによって、最初の 100 人の顧客の注文をたった一つの SQL 文で返すように、アクティブ・レコードに指示をしています。 結果として、実行される SQL 文の数は 101 から 2 に減ります。 イーガー・ローディングは、一つだけでなく、複数のリレーションに対しても使うことが出来ます。 さらには、*ネストされたリレーション* でさえ、イーガー・ロードすることが出来ます。 -ネストされたリレーションというのは、関連するアクティブレコードの中で宣言されているリレーションです。 +ネストされたリレーションというのは、関連するアクティブ・レコードの中で宣言されているリレーションです。 例えば、`Cutomer` が `orders` リレーションによって `Order` と関連しており、`Order` が `items` リレーションによって `Item` と関連している場合です。 `Customer` に対するクエリを実行するときに、ネストされたリレーションの記法である `orders.items` を使って、`items` をイーガー・ロードすることが出来ます。 @@ -1196,7 +1196,7 @@ $query->joinWith(['orders o' => function($q) { ### 逆リレーション -リレーションの宣言は、たいていの場合、二つのアクティブレコード・クラスの間で相互的なものになります。 +リレーションの宣言は、たいていの場合、二つのアクティブ・レコード・クラスの間で相互的なものになります。 例えば、`Customer` は `orders` リレーションによって `Order` に関連付けられ、逆に、`Order` は`customer` リレーションによって `Customer` に関連付けられる、という具合です。 ```php @@ -1263,7 +1263,7 @@ echo $customer2 === $customer ? '同じ' : '異なる'; リレーショナル・データを扱う時には、たいてい、さまざまなデータ間にリレーションを確立したり、既存のリレーションを破棄したりする必要があります。 そのためには、リレーションを定義するカラムの値を適切に設定することが必要です。 -アクティブレコードを使う場合は、結局の所、次のようなコードを書くことになるでしょう。 +アクティブ・レコードを使う場合は、結局の所、次のようなコードを書くことになるでしょう。 ```php $customer = Customer::findOne(123); @@ -1276,7 +1276,7 @@ $order->customer_id = $customer->id; $order->save(); ``` -アクティブレコードは、この仕事をもっと楽に達成することが出来るように、[[yii\db\ActiveRecord::link()|link()]] メソッドを提供しています。 +アクティブ・レコードは、この仕事をもっと楽に達成することが出来るように、[[yii\db\ActiveRecord::link()|link()]] メソッドを提供しています。 ```php $customer = Customer::findOne(123); @@ -1287,11 +1287,11 @@ $order->subtotal = 100; $order->link('customer', $customer); ``` -[[yii\db\ActiveRecord::link()|link()]] メソッドは、リレーション名と、リレーションを確立する対象のアクティブレコード・インスタンスを指定することを要求します。 -このメソッドは、二つのアクティブレコード・インスタンスをリンクする属性の値を修正して、それをデータベースに書き込みます。 +[[yii\db\ActiveRecord::link()|link()]] メソッドは、リレーション名と、リレーションを確立する対象のアクティブ・レコード・インスタンスを指定することを要求します。 +このメソッドは、二つのアクティブ・レコード・インスタンスをリンクする属性の値を修正して、それをデータベースに書き込みます。 上記の例では、`Order` インスタンスの `customer_id` 属性を `Customer` インスタンスの `id` 属性の値になるようにセットして、それをデータベースに保存します。 -> Note: 二つの新規作成されたアクティブレコード・インスタンスをリンクすることは出来ません。 +> Note: 二つの新規作成されたアクティブ・レコード・インスタンスをリンクすることは出来ません。 [[yii\db\ActiveRecord::link()|link()]] を使用することの利点は、リレーションが [中間テーブル](#junction-table) によって定義されている場合に、さらに明白になります。 例えば、一つの `Order` インスタンスと一つの`Item` インスタンスをリンクするのに、次のコードを使うことが出来ます。 @@ -1302,11 +1302,11 @@ $order->link('items', $item); 上記のコードによって、`order_item` 中間テーブルに、注文と商品を関連付けるための行が自動的に挿入されます。 -> Info: [[yii\db\ActiveRecord::link()|link()]] メソッドは、影響を受けるアクティブレコード・インスタンスを保存する際に、データ検証を実行しません。 +> Info: [[yii\db\ActiveRecord::link()|link()]] メソッドは、影響を受けるアクティブ・レコード・インスタンスを保存する際に、データ検証を実行しません。 このメソッドを呼ぶ前にすべての入力値を検証することはあなたの責任です。 [[yii\db\ActiveRecord::link()|link()]] の逆の操作が [[yii\db\ActiveRecord::unlink()|unlink()]] です。 -これは、既存の二つのアクティブレコード・インスタンスのリレーションを破棄します。 +これは、既存の二つのアクティブ・レコード・インスタンスのリレーションを破棄します。 例えば、 ```php @@ -1322,7 +1322,7 @@ $customer->unlink('orders', $customer->orders[0]); ## DBMS 間のリレーション -アクティブレコードは、異なるデータベースをバックエンドに持つアクティブレコードの間でリレーションを宣言することを可能にしています。 +アクティブ・レコードは、異なるデータベースをバックエンドに持つアクティブ・レコードの間でリレーションを宣言することを可能にしています。 データベースは異なるタイプ (例えば、MySQL と PostgreSQL、または、MS SQL と MongoDB) であってもよく、別のサーバで動作していても構いません。 同じ構文を使ってリレーショナル・クエリを実行することが出来ます。 例えば、 @@ -1370,8 +1370,8 @@ $customers = Customer::find()->with('comments')->all(); ## クエリ・クラスをカスタマイズする -デフォルトでは、全てのアクティブレコードのクエリは [[yii\db\ActiveQuery]] によってサポートされます。 -カスタマイズされたクエリ・クラスをアクティブレコードで使用するためには、[[yii\db\ActiveRecord::find()]] メソッドをオーバーライドして、カスタマイズされたクエリ・クラスのインスタンスを返すようにしなければなりません。 +デフォルトでは、全てのアクティブ・レコードのクエリは [[yii\db\ActiveQuery]] によってサポートされます。 +カスタマイズされたクエリ・クラスをアクティブ・レコードで使用するためには、[[yii\db\ActiveRecord::find()]] メソッドをオーバーライドして、カスタマイズされたクエリ・クラスのインスタンスを返すようにしなければなりません。 例えば、 ```php @@ -1431,7 +1431,7 @@ $inactiveComments = Comment::find()->active(false)->all(); ``` -> Tip: 大きなプロジェクトでは、アクティブレコード・クラスをクリーンに保つことが出来るように、クエリ関連のコードのほとんどをカスタマイズされたクエリ・クラスに保持することが推奨されます。 +> Tip: 大きなプロジェクトでは、アクティブ・レコード・クラスをクリーンに保つことが出来るように、クエリ関連のコードのほとんどをカスタマイズされたクエリ・クラスに保持することが推奨されます。 この新しいクエリ構築メソッドは、`Comment` に関するリレーションを定義するときや、リレーショナル・クエリを実行するときにも使用することが出来ます。 @@ -1469,15 +1469,15 @@ $customers = Customer::find()->with([ ## 追加のフィールドを選択する -アクティブレコードのインスタンスにクエリ結果からデータが投入されるときは、受け取ったデータセットのカラムの値が対応する属性に入れられます。 +アクティブ・レコードのインスタンスにクエリ結果からデータが投入されるときは、受け取ったデータセットのカラムの値が対応する属性に入れられます。 -クエリ結果から追加のカラムや値を取得して、アクティブレコードの内部に格納することが出来ます。 +クエリ結果から追加のカラムや値を取得して、アクティブ・レコードの内部に格納することが出来ます。 例えば、ホテルの客室の情報を含む `room` という名前のテーブルがあるとしましょう。 そして、全ての客室のデータは `length` (長さ)、`width` (幅)、`height` (高さ) というフィールドを使って、部屋の幾何学的なサイズに関する情報を格納しているとします。 空いている全ての部屋の一覧を容積の降順で取得する必要がある場合を考えて見てください。 レコードをその値で並べ替える必要があるので、PHP を使って容積を計算することは出来ません。 しかし、同時に、一覧には `volume` (容積) も表示したいでしょう。 -目的を達するためには、`Room` アクティブレコード・クラスにおいて追加のフィールドを宣言し、`volume` の値を格納する必要があります。 +目的を達するためには、`Room` アクティブ・レコード・クラスにおいて追加のフィールドを宣言し、`volume` の値を格納する必要があります。 ```php class Room extends \yii\db\ActiveRecord diff --git a/docs/guide-ja/db-dao.md b/docs/guide-ja/db-dao.md index 7121857..0208a06 100644 --- a/docs/guide-ja/db-dao.md +++ b/docs/guide-ja/db-dao.md @@ -2,7 +2,7 @@ ==================================== [PDO](http://www.php.net/manual/ja/book.pdo.php) の上に構築された Yii DAO (データベース・アクセス・オブジェクト) は、リレーショナル・データベースにアクセスするためのオブジェクト指向 API を提供するものです。 -これは、データベースにアクセスする他のもっと高度な方法、例えば [クエリ・ビルダ](db-query-builder.md) や [アクティブレコード](db-active-record.md) の基礎でもあります。 +これは、データベースにアクセスする他のもっと高度な方法、例えば [クエリ・ビルダ](db-query-builder.md) や [アクティブ・レコード](db-active-record.md) の基礎でもあります。 Yii DAO を使うときは、主として素の SQL と PHP 配列を扱う必要があります。 結果として、Yii DAO はデータベースにアクセスする方法としては最も効率的なものになります。 @@ -202,7 +202,7 @@ $post2 = $command->queryOne(); このやり方でクエリを実行すると、パラメータの値が違うごとに新しいクエリを実行するのに比べて、はるかに効率を良くすることが出来ます。 > Info: パラメータ・バインディングは、素の SQL を含む文字列に値を挿入しなければならない場所でのみ使用されます。 -> [クエリ・ビルダ](db-query-builder.md) や [アクティブレコード](db-active-record.md) のような高レベルの抽象的レイヤーでは、 +> [クエリ・ビルダ](db-query-builder.md) や [アクティブ・レコード](db-active-record.md) のような高レベルの抽象的レイヤーでは、 > 多くの場所で SQL に変換される値の配列を指定する場合がよくあります。 > これらの場所では Yii によってパラメータ・バインディングが内部的に実行されますので、 > パラメータを手動で指定する必要はありません。 @@ -654,4 +654,4 @@ $table = Yii::$app->db->getTableSchema('post'); ``` このメソッドは、テーブルのカラム、プライマリ・キー、外部キーなどの情報を含む [[yii\db\TableSchema]] オブジェクトを返します。 -これらの情報は、主として [クエリ・ビルダ](db-query-builder.md) や [アクティブレコード](db-active-record.md) によって利用されて、特定のデータベースに依存しないコードを書くことを助けてくれています。 +これらの情報は、主として [クエリ・ビルダ](db-query-builder.md) や [アクティブ・レコード](db-active-record.md) によって利用されて、特定のデータベースに依存しないコードを書くことを助けてくれています。 diff --git a/docs/guide-ja/db-migrations.md b/docs/guide-ja/db-migrations.md index 00fc259..a09eb23 100644 --- a/docs/guide-ja/db-migrations.md +++ b/docs/guide-ja/db-migrations.md @@ -691,11 +691,11 @@ class m150101_185401_create_news_table extends Migration これは、通常、データベースからのデータ取得については、メッセージを追加して表示する必要がないからです。 更にまた、複雑なクエリを構築して実行するためには、強力な [クエリ・ビルダ](db-query-builder.md) を使うことが出来るからです。 -> Note: マイグレーションを使ってデータを操作する場合に、あなたは、あなたの [アクティブレコード](db-active-record.md) クラスをデータ操作に使えば便利じゃないか、と気付くかもしれません。 -> なぜなら、いくつかのロジックは既にアクティブレコードで実装済みだから、と。 +> Note: マイグレーションを使ってデータを操作する場合に、あなたは、あなたの [アクティブ・レコード](db-active-record.md) クラスをデータ操作に使えば便利じゃないか、と気付くかもしれません。 +> なぜなら、いくつかのロジックは既にアクティブ・レコードで実装済みだから、と。 > しかしながら、マイグレーションの中で書かれるコードが永久に不変であることを本質とするのと対照的に、アプリケーションのロジックは変化にさらされるものであるということを心に留めなければなりません。 -> 従って、マイグレーションのコードでアクティブレコードを使用していると、アクティブレコードのレイヤにおけるロジックの変更が思いがけず既存のマイグレーションを破壊することがあり得ます。 -> このような理由のため、マイグレーションのコードはアクティブレコードのようなアプリケーションの他のロジックから独立を保つべきです。 +> 従って、マイグレーションのコードでアクティブ・レコードを使用していると、アクティブ・レコードのレイヤにおけるロジックの変更が思いがけず既存のマイグレーションを破壊することがあり得ます。 +> このような理由のため、マイグレーションのコードはアクティブ・レコードのようなアプリケーションの他のロジックから独立を保つべきです。 ## マイグレーションを適用する diff --git a/docs/guide-ja/helper-array.md b/docs/guide-ja/helper-array.md index 886c1c3..d606c4c 100644 --- a/docs/guide-ja/helper-array.md +++ b/docs/guide-ja/helper-array.md @@ -419,7 +419,7 @@ $result = ArrayHelper::merge($array1, $array2); ## オブジェクトを配列に変換する オブジェクトまたはオブジェクトの配列を配列に変換する必要があることがよくあります。 -最もよくあるのは、REST API によってデータ配列を提供するなどの目的で、アクティブレコード・モデルを変換する場合です。 +最もよくあるのは、REST API によってデータ配列を提供するなどの目的で、アクティブ・レコード・モデルを変換する場合です。 そうするために、次のコードを使うことが出来ます。 ```php diff --git a/docs/guide-ja/input-forms.md b/docs/guide-ja/input-forms.md index 5316c32..6c15f59 100644 --- a/docs/guide-ja/input-forms.md +++ b/docs/guide-ja/input-forms.md @@ -1,7 +1,7 @@ フォームを作成する ================== -アクティブレコードに基づくフォーム : ActiveForm +アクティブ・レコードに基づくフォーム : ActiveForm ----------------------------------------------- Yii においてフォームを使用するときは、主として [[yii\widgets\ActiveForm]] による方法を使います。 フォームがモデルに基づくものである場合はこの方法を選ぶべきです。 @@ -10,7 +10,7 @@ Yii においてフォームを使用するときは、主として [[yii\widget フォームは、クライアント・サイドで表示されるものですが、たいていの場合、対応する [モデル](structure-models.md) を持ち、それを使ってサーバ・サイドでフォームの入力を検証します (入力の検証の詳細については、[入力を検証する](input-validation.md) のセクションを参照してください)。 モデルに基づくフォームを作成する場合、最初のステップは、モデルそのものを定義することです。 -モデルは、データベースの何らかのデータを表現するために [アクティブレコード](db-active-record.md) から派生させたクラスか、あるいは、任意の入力、例えばログイン・フォームの入力を保持するための ([[yii\base\Model]] から派生させた) 汎用的な Model クラスか、どちらかにすることが出来ます。 +モデルは、データベースの何らかのデータを表現するために [アクティブ・レコード](db-active-record.md) から派生させたクラスか、あるいは、任意の入力、例えばログイン・フォームの入力を保持するための ([[yii\base\Model]] から派生させた) 汎用的な Model クラスか、どちらかにすることが出来ます。 > Tip: フォームのフィールドがデータベースのカラムと異なっていたり、そのフォーム特有のフォーマット形式やロジックがあったりする場合は、 > [[yii\base\Model]] を拡張した独自のモデルを作るほうを選んで下さい。 diff --git a/docs/guide-ja/input-tabular-input.md b/docs/guide-ja/input-tabular-input.md index 0628353..37217c9 100644 --- a/docs/guide-ja/input-tabular-input.md +++ b/docs/guide-ja/input-tabular-input.md @@ -2,7 +2,7 @@ ================================== 時として、一つのフォームで同じ種類の複数のモデルを扱わなければならないことがあります。 -例えば、それぞれが「名前-値」の形で保存され、`Setting` [アクティブレコード](db-active-record.md) モデルとして表される複数の設定項目を扱うフォームです。 +例えば、それぞれが「名前-値」の形で保存され、`Setting` [アクティブ・レコード](db-active-record.md) モデルとして表される複数の設定項目を扱うフォームです。 この種のフォームは「表形式インプット」と呼ばれることもよくあります。 これとは対照的な、異なる種類のさまざまなモデルを扱うことについては、[複数のモデルを持つ複雑なフォーム](input-multiple-models.md) のセクションで扱います。 diff --git a/docs/guide-ja/intro-upgrade-from-v1.md b/docs/guide-ja/intro-upgrade-from-v1.md index 91df3f8..acece2f 100644 --- a/docs/guide-ja/intro-upgrade-from-v1.md +++ b/docs/guide-ja/intro-upgrade-from-v1.md @@ -5,9 +5,9 @@ Yii フレームワークは 2.0 のために完全に書き直されたため 結果として、バージョン 1.1 からのアップグレードは、マイナー・バージョン間でのアップグレードのような些細な仕事ではなくなりました。 このセクションでは、二つのバージョン間の主要な違いを説明します。 -もし以前に Yii 1.1 を使ったことがなければ、あなたはこのセクションを飛ばして直接に "[始めよう](start-installation.md)" に進んでも、問題はありません。 +もしあなたが以前に Yii 1.1 を使ったことがなければ、このガイドを飛ばして直接に "[始めよう](start-installation.md)" に進んでも、問題はありません。 -Yii 2.0 は、この要約でカバーされているよりも多くの新機能を導入していることに注意してください。 +Yii 2.0 はこの要約でカバーされているよりも多くの新機能を導入していることに注意してください。 決定版ガイド全体を通読して全ての新機能について学習することを強く推奨します。 おそらく、以前は自分自身で開発する必要があったいくつかの機能が、今ではコア・コードの一部になっていることに気付くでしょう。 @@ -37,14 +37,15 @@ Yii 2.0 は PHP 5.4 以上を必要とします。PHP 5.4 は、Yii 1.1 によ - [遅延静的束縛(Late Static Bindings)](http://php.net/manual/ja/language.oop5.late-static-bindings.php)。 - [日付と時刻](http://php.net/manual/ja/book.datetime.php)。 - [トレイト](http://php.net/manual/ja/language.oop5.traits.php)。 -- [国際化(intl)](http://php.net/manual/ja/book.intl.php)。Yii 2.0 は国際化の機能をサポートするために `intl` PHP 拡張を利用しています。 +- [国際化(intl)](http://php.net/manual/ja/book.intl.php)。 + Yii 2.0 は国際化の機能をサポートするために `intl` PHP 拡張を利用しています。 名前空間 -------- Yii 2.0 での最も顕著な変更は名前空間の使用です。 -ほとんど全てのコアクラスが、例えば、`yii\web\Request` のように名前空間に属します。 +ほとんど全てのコア・クラスが、例えば、`yii\web\Request` のように名前空間に属します。 クラス名に "C" の接頭辞はもう使われません。 命名のスキームはディレクトリ構造に従うようになりました。 例えば、`yii\web\Request` は、対応するクラス・ファイルが Yii フレームワーク・フォルダの下の `web/Request.php` であることを示します。 @@ -57,17 +58,20 @@ Yii 2.0 での最も顕著な変更は名前空間の使用です。 Yii 2.0 は、1.1 の `CComponent` クラスを二つのクラス、すなわち、[[yii\base\BaseObject]] と [[yii\base\Component]] に分割しました。 [[yii\base\BaseObject|BaseObject]] クラスは、ゲッターとセッターを通じて [オブジェクト・プロパティ](concept-properties.md) を定義することを可能にする、軽量な基底クラスです。 -[[yii\base\Component|Component]] クラスは [[yii\base\BaseObject|BaseObject]] からの拡張であり、[イベント](concept-events.md) と [ビヘイビア](concept-behaviors.md) をサポートします。 +[[yii\base\Component|Component]] クラスは [[yii\base\BaseObject|BaseObject]] からの拡張であり、 +[イベント](concept-events.md) と [ビヘイビア](concept-behaviors.md) をサポートします。 -あなたのクラスがイベントやビヘイビアの機能を必要としない場合は、[[yii\base\BaseObject|BaseObject]] を基底クラスとして使うことを考慮すべきです。 -通常は、基本的なデータ構造を表すクラスに対して、このことが当てはまります。 +あなたのクラスがイベントやビヘイビアの機能を必要としない場合は、[[yii\base\BaseObject|BaseObject]] +を基底クラスとして使うことを考慮すべきです。 +基本的なデータ構造を表すクラスに対して、通常、このことが当てはまります。 オブジェクトの構成 ------------------ [[yii\base\BaseObject|BaseObject]] クラスはオブジェクトを構成するための統一された方法を導入しています。 -[[yii\base\BaseObject|BaseObject]] の全ての派生クラスは、コンストラクタが必要な場合には、インスタンスが正しく構成されるように、コンストラクタを以下のようにして宣言しなければなりません。 +[[yii\base\BaseObject|BaseObject]] の全ての派生クラスは、コンストラクタが必要な場合には、インスタンスが正しく構成されるように、 +コンストラクタを以下のようにして宣言しなければなりません。 ```php class MyClass extends \yii\base\BaseObject @@ -89,10 +93,12 @@ class MyClass extends \yii\base\BaseObject ``` 上記のように、コンストラクタは最後のパラメータとして構成情報の配列を取らなければなりません。 -構成情報の配列に含まれる「名前-値」のペアが、コンストラクタの最後でプロパティを構成します。 -[[yii\base\BaseObject::init()|init()]] メソッドをオーバーライドして、構成情報が適用された後に行うべき初期化処理を行うことが出来ます。 +構成情報の配列に含まれる「名前・値」のペアが、コンストラクタの最後でプロパティを構成します。 +[[yii\base\BaseObject::init()|init()]] メソッドをオーバーライドして、 +構成情報が適用された後に行うべき初期化処理を行うことが出来ます。 -この規約に従うことによって、新しいオブジェクトを生成して構成するときに、構成情報配列を使うことが出来るようになります。 +この規約に従うことによって、構成情報配列を使って新しいオブジェクトを生成して構成することが +出来るようになります。 ```php $object = Yii::createObject([ @@ -108,8 +114,7 @@ $object = Yii::createObject([ イベント -------- -Yii 1 では、イベントは `on` メソッド (例えば、`onBeforeSave`) を定義することによって作成されました。 -Yii 2 では、どのようなイベント名でも使うことが出来るようになりました。 +Yii 1 では、イベントは `on` メソッド (例えば、`onBeforeSave`) を定義することによって作成されました。Yii 2 では、どのようなイベント名でも使うことが出来るようになりました。 [[yii\base\Component::trigger()|trigger()]] メソッドを呼んでイベントを発生させます。 ```php @@ -141,7 +146,7 @@ Yii 2.0 は、パス・エイリアスの使用を、ファイル/ディレク ルートの名前空間に対しては、それぞれ、パス・エイリアスを定義することが推奨されます。 そうすれば、余計な構成をしなくても、Yii のクラス・オートローダを使うことが出来るようになります。 例えば、`@yii` が Yii のインストール・ディレクトリを指しているので、`yii\web\Request` というようなクラスをオートロードすることが出来る訳です。 -サードパーティのライブラリ、例えば Zend フレームワークなどを使う場合にも、そのフレームワークのインストール・ディレクトリを指す `@Zend` というパス・エイリアスを定義することが出来ます。 +サード・パーティのライブラリ、例えば Zend フレームワークなどを使う場合にも、そのフレームワークのインストール・ディレクトリを指す `@Zend` というパス・エイリアスを定義することが出来ます。 一旦そうしてしまえば、その Zend フレームワークのライブラリ内のどんなクラスでも、Yii からオートロードすることが出来るようになります。 パス・エイリアスに関する詳細は [エイリアス](concept-aliases.md) のセクションを参照してください。 @@ -151,14 +156,12 @@ Yii 2.0 は、パス・エイリアスの使用を、ファイル/ディレク ------ Yii 2 のビューについての最も顕著な変更は、ビューの中の `$this` という特殊な変数が現在のコントローラやウィジェットを指すものではなくなった、ということです。 -今や `$this` は 2.0 で新しく導入された概念である *ビュー* オブジェクトを指します。 +今や `$this` は 2.0 で新しく導入された概念である *ビュー*・オブジェクトを指します。 *ビュー*・オブジェクトは [[yii\web\View]] という型であり、MVC パターンのビューの部分を表すものです。 ビューにおいてコントローラやウィジェットにアクセスしたい場合は、`$this->context` を使うことが出来ます。 -パーシャル・ビューを別のビューの中でレンダリングするためには、`$this->renderPartial()` ではなく、`$this->render()` を使います。 -さらに、`render` の呼び出しは、2.0 では明示的に echo しなくてはなりません。 -と言うのは、`render()` メソッドは、レンダリング結果を返すものであり、それを直接に表示するものではないからです。 -例えば、 +パーシャル・ビューを別のビューの中でレンダリングするためには、`$this->renderPartial()` ではなく、`$this->render()` を使います。さらに、`render` の呼び出しは、2.0 では明示的に echo しなくてはなりません。 +と言うのは、`render()` メソッドは、レンダリング結果を返すものであり、それを直接に表示するものではないからです。例えば、 ```php echo $this->render('_item', ['item' => $item]); @@ -166,20 +169,19 @@ echo $this->render('_item', ['item' => $item]); PHP を主たるテンプレート言語として使う以外に、Yii 2.0 は人気のある二つのテンプレート・エンジン、Smarty と Twig に対する正式なサポートを備えています。 Prado テンプレート・エンジンはもはやサポートされていません。 -これらのテンプレート・エンジンを使うためには、[[yii\base\View::$renderers|View::$renderers]] プロパティをセットして、`view` アプリケーション・コンポーネントを構成する必要があります。 +これらのテンプレート・エンジンを使うためには、`view` アプリケーション・コンポーネントを構成して +[[yii\base\View::$renderers|View::$renderers]] プロパティをセットする必要があります。 詳細は [テンプレート・エンジン](tutorial-template-engines.md) のセクションを参照してください。 モデル ------ -Yii 2.0 は [[yii\base\Model]] を 1.1 における `CModel` と同様な基底モデルとして使います。 -`CFormModel` というクラスは完全に廃止されました。 -Yii 2 では、それの代りに [[yii\base\Model]] を拡張して、フォームのモデル・クラスを作成すべきです。 +Yii 2.0 は 1.1 における `CModel` と同様な [[yii\base\Model]] を基底モデルとして使います。`CFormModel` というクラスは完全に廃止されました。 +Yii 2 では、それの代りに [[yii\base\Model]] を拡張して、フォームのモデル・クラスを作成しなければなりません。 Yii 2.0 は サポートされるシナリオを宣言するための [[yii\base\Model::scenarios()|scenarios()]] という新しいメソッドを導入しました。 -このメソッドを使って、どのシナリオの下で、ある属性が検証される必要があるか、また、安全とみなされるか否か、などを宣言することが出来ます。 -例えば、 +このメソッドを使って、どのシナリオの下で、ある属性が検証される必要があるか、また、安全とみなされるか否か、などを宣言します。例えば、 ```php public function scenarios() @@ -193,13 +195,13 @@ public function scenarios() 上記では二つのシナリオ、すなわち、`backend` と `frontend` が宣言されています。 `backend` シナリオでは、`email` と `role` の属性が両方とも安全であり、一括代入が可能です。 -`frontend` シナリオでは、`email` は一括代入が可能ですが、`role` は不可能です。 -`email` と `role` は、両方とも、規則を使って検証されなければなりません。 +`frontend` シナリオでは、`email` は一括代入が可能ですが、`role` は不可能です。`email` と `role` は、両方とも、規則を使って検証されなければなりません。 [[yii\base\Model::rules()|rules()]] メソッドが、Yii 1.1 に引き続き、検証規則を宣言するために使われます。 [[yii\base\Model::scenarios()|scenarios()]] が導入されたことにより、`unsafe` バリデータが無くなったことに注意してください。 -ほとんどの場合、すなわち、[[yii\base\Model::rules()|rules()]] メソッドが存在しうるシナリオを完全に指定しており、そして `unsafe` な属性を宣言する必要が無いなら、[[yii\base\Model::scenarios()|scenarios()]] をオーバーライドする必要はありません。 +ほとんどの場合、すなわち、[[yii\base\Model::rules()|rules()]] メソッドが存在しうるシナリオを完全に指定しており、 +そして `unsafe` な属性を宣言する必要が無い場合であれば、[[yii\base\Model::scenarios()|scenarios()]] をオーバーライドする必要はありません。 モデルについての詳細を学習するためには、[モデル](structure-models.md) のセクションを参照してください。 @@ -207,11 +209,11 @@ public function scenarios() コントローラ ------------ -Yii 2.0 は [[yii\web\Controller]] を基底のコントローラ・クラスとして使います。 -これは Yii 1.1 における`CController` と同様なクラスです。 +Yii 2.0 は [[yii\web\Controller]] を基底のコントローラ・クラスとして使います。これは Yii 1.1 における`CController` と同様なクラスです。 [[yii\base\Action]] がアクション・クラスの基底クラスです。 -コントローラに関して、あなたのコードに最も顕著な影響を及ぼす変更点は、コントローラのアクションは表示したいコンテントを、エコーするのでなく、返さなければならなくなった、ということです。 +コントローラに関して、あなたのコードに最も顕著な影響を及ぼす変更点は、 +コントローラのアクションは表示したいコンテントを、エコーするのでなく、返さなければならなくなった、ということです。 ```php public function actionView($id) @@ -234,7 +236,8 @@ public function actionView($id) Yii 2.0 は [[yii\base\Widget]] を基底のウィジェット・クラスとして使用します。これは Yii 1.1 の `CWidget` と同様なクラスです。 いろんな IDE においてフレームワークに対するより良いサポートを得るために、Yii 2.0 はウィジェットを使うための新しい構文を導入しました。 -スタティックなメソッド [[yii\base\Widget::begin()|begin()]]、[[yii\base\Widget::end()|end()]]、そして [[yii\base\Widget::widget()|widget()]] が導入されました。以下のようにして使います。 +スタティックなメソッド [[yii\base\Widget::begin()|begin()]]、[[yii\base\Widget::end()|end()]]、そして [[yii\base\Widget::widget()|widget()]] が導入されました。 +以下のようにして使います。 ```php use yii\widgets\Menu; @@ -258,7 +261,7 @@ ActiveForm::end(); テーマ ------ -テーマは 2.0 では完全に違う動作をします。 +テーマは 2.0 では完全に違う動き方をします。 テーマは、ソースのビュー・ファイル・パスをテーマのビュー・ファイル・パスにマップするパス・マッピング機構に基づくものになりました。 例えば、あるテーマのパス・マップが `['/web/views' => '/web/themes/basic']` である場合、ビュー・ファイル `/web/views/site/index.php` のテーマ版は `/web/themes/basic/site/index.php` になります。 この理由により、テーマはどのようなビュー・ファイルに対してでも適用することが出来るようになりました。 @@ -292,7 +295,8 @@ Yii 2.0 はコメント・ブロックからコマンドのヘルプ情報を自 Yii 2.0 は [PECL intl PHP モジュール](http://pecl.php.net/package/intl) に賛同して、内蔵の日付フォーマッタと数字フォーマッタの部品を取り除きました。 メッセージは `i18n` アプリケーション・コンポーネント経由で翻訳されるようになりました。 -このコンポーネントは一連のメッセージ・ソースを管理するもので、メッセージのカテゴリに基づいて異なるメッセージ・ソースを使うことを可能にするものです。 +このコンポーネントは一連のメッセージ・ソースを管理するもので、 +メッセージのカテゴリに基づいて異なるメッセージ・ソースを使うことを可能にするものです。 詳細については [国際化](tutorial-i18n.md) のセクションを参照してください。 @@ -300,10 +304,9 @@ Yii 2.0 は [PECL intl PHP モジュール](http://pecl.php.net/package/intl) アクション・フィルタ -------------------- -アクション・フィルタはビヘイビアによって実装されるようになりました。 -新しいカスタム・フィルタを定義するためには、[[yii\base\ActionFilter]] を拡張します。 +アクション・フィルタはビヘイビアによって実装されるようになりました。新しいカスタム・フィルタを定義するためには、[[yii\base\ActionFilter]] を拡張します。 フィルタを使うためには、そのフィルタ・クラスをビヘイビアとしてコントローラにアタッチします。 -例えば、[[yii\filters\AccessControl]] を使うためには、コントローラに次のコードを書くことになります。 +例えば、[[yii\filters\AccessControl]] フィルタを使うためには、コントローラに次のコードを書くことになります。 ```php public function behaviors() @@ -329,7 +332,8 @@ Yii 2.0 は、*アセット・バンドル* と呼ばれる新しい概念を導 アセット・バンドルは、あるディレクトリの下に集められた一群のアセット・ファイル (例えば、JavaScript ファイル、CSS ファイル、イメージ・ファイルなど) です。 それぞれのアセット・バンドルは [[yii\web\AssetBundle]] を拡張したクラスとして表わされます。 -アセット・バンドルを [[yii\web\AssetBundle::register()]] を通じて登録することによって、そのバンドルに含まれるアセットにウェブ経由でアクセスできるようになります。 +アセット・バンドルを [[yii\web\AssetBundle::register()]] を通じて登録することによって、 +そのバンドルに含まれるアセットにウェブ経由でアクセスできるようになります。 Yii 1 とは異なり、バンドルを登録したページは、そのバンドルで指定されている JavaScript と CSS ファイルへの参照を自動的に含むようになります。 詳細については [アセット](structure-assets.md) のセクションを参照してください。 @@ -346,8 +350,7 @@ Yii 2.0 はよく使われるスタティックなヘルパ・クラスを数多 * [[yii\helpers\FileHelper]] * [[yii\helpers\Json]] -詳細については、ヘルパの [概要](helper-overview.md) のセクションを参照してください。 - +詳細については、[ヘルパの概要](helper-overview.md) のセクションを参照してください。 フォーム -------- @@ -389,19 +392,18 @@ $sql = $command->sql; $rows = $command->queryAll(); ``` -何より良いのは、このようなクエリ構築メソッドが [アクティブレコード](db-active-record.md) を扱う時にも使える、ということです。 +何より良いのは、このようなクエリ構築メソッドが [アクティブ・レコード](db-active-record.md) を扱う時にも使える、ということです。 詳細については [クエリ・ビルダ](db-query-builder.md) のセクションを参照してください。 -アクティブレコード ------------------- +アクティブ・レコード +-------------------- -Yii 2.0 は [アクティブレコード](db-active-record.md) に数多くの変更を導入しました。 +Yii 2.0 は [アクティブ・レコード](db-active-record.md) に数多くの変更を導入しました。 最も顕著な違いは、クエリの構築方法とリレーショナル・クエリの処理の二つです。 -1.1 の `CDbCriteria` クラスは Yii 2 では [[yii\db\ActiveQuery]] に置き換えられました。 -このクラスは [[yii\db\Query]] を拡張したものであり、従って全てのクエリ構築メソッドを継承します。 +1.1 の `CDbCriteria` クラスは Yii 2 では [[yii\db\ActiveQuery]] に置き換えられました。このクラスは [[yii\db\Query]] を拡張したものであり、従って全てのクエリ構築メソッドを継承します。 以下のように、[[yii\db\ActiveRecord::find()]] を呼んでクエリの構築を開始します。 ```php @@ -413,8 +415,7 @@ $customers = Customer::find() ``` リレーションを宣言するために必要なことは、[[yii\db\ActiveQuery|ActiveQuery]] オブジェクトを返す getter メソッドを定義するだけのことです。 -getter によって定義されたプロパティの名前がリレーションの名前を表します。 -例えば、以下のコードは `orders` リレーションを宣言するものです +getter によって定義されたプロパティの名前がリレーションの名前を表します。例えば、以下のコードは `orders` リレーションを宣言するものです (1.1 では `relations()` という一個の中枢でリレーションを宣言しなければなりませんでした)。 ```php @@ -428,7 +429,7 @@ class Customer extends \yii\db\ActiveRecord ``` こうすることで、`$customer->orders` という構文によって関連テーブルにある顧客のオーダにアクセスすることが出来るようになります。 -また、下記のコードを用いて、カスタマイズしたクエリ条件によるオンザフライのリレーショナル・クエリを実行することも出来ます。 +また、下記のコードを用いて、カスタマイズしたクエリ条件によるリレーショナル・クエリをその場で実行することも出来ます。 ```php $orders = $customer->getOrders()->andWhere('status=1')->all(); @@ -439,8 +440,8 @@ $orders = $customer->getOrders()->andWhere('status=1')->all(); Yii 2.0 では、JOIN を使わずに二つの SQL 文が実行されます。 すなわち、第一の SQL 文が主たるレコードを返し、第二の SQL 文は主レコードのプライマリ・キーを使うフィルタリングによって関連レコードを返します。 -多数のレコードを返すクエリを構築するときは、[[yii\db\ActiveRecord|ActiveRecord]] を返す代りに、[[yii\db\ActiveQuery::asArray()|asArray()]] メソッドをチェインすることが出来ます。 -そうすると、クエリ結果は配列として返されることになり、レコードの数が多い場合は、必要な CPU 時間とメモリを著しく削減することが出来ます。 +多数のレコードを返すクエリを構築するときは、[[yii\db\ActiveRecord|ActiveRecord]] オブジェクトを返す代りに、[[yii\db\ActiveQuery::asArray()|asArray()]] メソッドをチェインすることが出来ます。 +そうすると、クエリ結果は配列として返されることになり、レコードの数が多い場合は、必要とされる CPU 時間とメモリを著しく削減することが出来ます。 例えば、 ```php @@ -448,7 +449,7 @@ $customers = Customer::find()->asArray()->all(); ``` もう一つの変更点は、属性のデフォルト値を public なプロパティによって定義することは出来なくなった、ということです。 -デフォルト値を定義する必要がある場合は、アクティブレコード・クラスの `init` メソッドの中で設定しなければなりません。 +デフォルト値を定義する必要がある場合は、アクティブ・レコード・クラスの `init` メソッドの中で設定しなければなりません。 ```php public function init() @@ -458,19 +459,18 @@ public function init() } ``` -1.1 では、アクティブレコード・クラスのコンストラクタをオーバーライドすることについて、いくつか問題がありました。 -バージョン 2.0 では、もう問題はありません。 +1.1 では、アクティブ・レコード・クラスのコンストラクタをオーバーライドすることについて、いくつか問題がありました。バージョン 2.0 では、もう問題はありません。 コンストラクタにパラメータを追加する場合は、[[yii\db\ActiveRecord::instantiate()]] をオーバーライドする必要があるかもしれないことに注意してください。 -アクティブレコードについては、他にも多くの変更と機能強化がなされています。 -詳細については [アクティブレコード](db-active-record.md) のセクションを参照してください。 +アクティブ・レコードについては、他にも多くの変更と機能強化がなされています。 +詳細については [アクティブ・レコード](db-active-record.md) のセクションを参照してください。 -アクティブレコードのビヘイビア ------------------------------- +アクティブ・レコードのビヘイビア +-------------------------------- -2.0 では基底のビヘイビア・クラス `CActiveRecordBehavior` が廃止されました。 -アクティブレコードのビヘイビアを作成したいときは、直接に `yii\base\Behavior` を拡張しなければなりません。 +2.0 では基底のビヘイビア・クラス `CActiveRecordBehavior` を廃止しました。 +アクティブ・レコードのビヘイビアを作成したいときは、直接に `yii\base\Behavior` を拡張しなければなりません。 ビヘイビア・クラスがオーナーの何らかのイベントに反応する必要がある場合は、以下のように `events()` メソッドをオーバーライドしなければなりません。 ```php @@ -502,10 +502,10 @@ User と IdentityInterface ------------------------- 1.1 の `CWebUser` クラスは [[yii\web\User]] に取って換られました。 -そして `CUserIdentity` クラスはもうありません。代りに、使い方がもっと単純な [[yii\web\IdentityInterface]] を実装すべきです。 +そして `CUserIdentity` クラスはもうありません。代りに、使い方がもっと単純な [[yii\web\IdentityInterface]] を実装しなければなりません。 アドバンスト・プロジェクト・テンプレートがそういう例を提供しています。 -詳細は [認証](security-authentication.md)、[権限付与](security-authorization.md)、そして [アドバンスト・プロジェクト・テンプレート](https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide-ja/README.md) のセクションを参照してください。 +詳細は [認証](security-authentication.md)、[権限付与](security-authorization.md)、そして [アドバンスト・プロジェクト・テンプレート](https://www.yiiframework.com/extension/yiisoft/yii2-app-advanced/doc/guide) のセクションを参照してください。 URL 管理 @@ -526,7 +526,8 @@ Yii 2 の URL 管理は 1.1 のそれと似たようなものです。 詳細については [ルーティングと URL 生成](runtime-routing.md) のセクションを参照してください。 -ルートの命名規約における重要な変更は、コントローラとアクションのキャメルケースの名前が各単語をハイフンで分けた小文字の名前になるようになった、という点です。 +ルートの命名規約における重要な変更は、コントローラとアクションのキャメル・ケースの名前が +各単語をハイフンで分けた小文字の名前になるようになった、という点です。 例えば、`CamelCaseController` のコントローラ ID は `camel-case` となります。 詳細については、[コントローラ ID](structure-controllers.md#controller-ids) と [アクション ID](structure-controllers.md#action-ids) のセクションを参照してください。 diff --git a/docs/guide-ja/intro-yii.md b/docs/guide-ja/intro-yii.md index 73d0c1e..595093f 100644 --- a/docs/guide-ja/intro-yii.md +++ b/docs/guide-ja/intro-yii.md @@ -11,7 +11,8 @@ Yii は何に適しているか Yii は汎用的なウェブ・プログラミング・フレームワークです。 つまり、あらゆる種類のウェブ・アプリケーションを PHP を使って開発するときに、Yii を使用することが出来ます。 -コンポーネント・ベースのアーキテクチャと洗練されたキャッシュ・サポートを持っているため、Yii は大規模なアプリケーション、たとえば、ポータル、フォーラム、コンテント・マネージメント・システム (CMS)、電子商取引プロジェクト、RESTful ウェブ・サービス、等々を開発するのに特に適しています。 +コンポーネント・ベースのアーキテクチャと洗練されたキャッシュ・サポートを有しているため、Yii は大規模なアプリケーション、 +たとえば、ポータル、フォーラム、コンテント・マネージメント・システム (CMS)、電子商取引プロジェクト、RESTful ウェブ・サービス、等々を開発するのに特に適しています。 Yii を他のフレームワークと比べると @@ -19,25 +20,28 @@ Yii を他のフレームワークと比べると あなたが既に他のフレームワークに親しんでいる場合は、Yii を比較するとどうなのかを知りたいでしょう。 -- ほとんどの PHP フレームワーク同様、Yii は MVC (Model-View-Controller) アーキテクチャ・パターンを実装し、このパターンに基づいたコードの編成を推進しています。 +- ほとんどの PHP フレームワーク同様、Yii は MVC (Model-View-Controller) アーキテクチャ・パターンを実装し、 + このパターンに基づいたコードの編成を推進しています。 - Yii は、コードはシンプルかつエレガントに書かれるべきである、という哲学を採用しています。 - 何らかのデザイン・パターンの厳密な遵守を主な目的とする凝りすぎた設計を、Yii がしようと試みることは決してありません。 + 何らかのデザイン・パターンの厳密な遵守を主目的とする凝りすぎた設計は、Yii が決して試みようとしないものです。 - Yii はフル装備のフレームワークです。 - クエリ・ビルダ、リレーショナル・データベースと NoSQL データベースの双方のためのアクティブレコード、RESTful API 開発サポート、多層構成のキャッシュ・サポート、その他、検証済みで直ちに使える多数の機能を提供します。 + クエリ・ビルダ、リレーショナル・データベースと NoSQL データベース双方のためのアクティブ・レコード、RESTful API 開発サポート、多層構成のキャッシュ・サポート、 + 等々、検証済みで直ちに使える多数の機能を提供します。 - Yii は極めて拡張性の高いフレームワークです。あなたはコアのコードのほとんど全ての要素をカスタマイズしたり置き換えたりすることが出来ます。 また、Yii の堅固なエクステンション・アーキテクチャを利用して、再配布可能なエクステンションを使用したり開発したりすることも出来ます。 - 高性能であることは常に Yii の主たる目標です。 -Yii はワンマン・ショーではありません。Yii は [強力なコア開発チーム](http://www.yiiframework.com/team/) および Yii 開発に間断なく貢献してくれるプロフェッショナルの大きなコミュニティーに支えられたプロジェクトです。 +Yii はワンマン・ショーではありません。Yii は [強力なコア開発チーム](http://www.yiiframework.com/team/) および +Yii 開発に間断なく貢献してくれるプロフェッショナルの大きなコミュニティーに支えられたプロジェクトです。 Yii 開発チームは、最新のウェブ開発の潮流と、他のフレームワークやプロジェクトに見出される最善のプラクティスと機能を、注意深く見守り続けています。 -他のところで見出された最善のプラクティスと機能で最も適切なものは、定期的にコアフレームワークに組み込まれ、シンプルかつエレガントなインタフェイスを通じて公開されます。 +他のところで見出された最善のプラクティスと機能で最も適切なものは、定期的にコア・フレームワークに組み込まれ、 +シンプルかつエレガントなインタフェイスを通じて公開されます。 Yii のバージョン ---------------- -Yii は現在、利用可能な二つのメジャー・バージョン、すなわち 1.1 と 2.0 を持っています。 -バージョン 1.1 は古い世代のもので、現在はメンテナンス・モードにあります。 +Yii は現在、利用可能な二つのメジャー・バージョン、すなわち 1.1 と 2.0 を持っています。バージョン 1.1 は古い世代のもので、現在はメンテナンス・モードにあります。 バージョン 2.0 は、最新のテクノロジーとプロトコル、例えば、Composer、PSR、名前空間、トレイトなどを採用して、Yii を完全に書き直したものです。 バージョン 2.0 がこのフレームワークの現世代を表すものであり、今後数年間にわたって主要な開発努力の対象となるものです。 このガイドは主としてバージョン 2.0 について述べます。 diff --git a/docs/guide-ja/output-data-providers.md b/docs/guide-ja/output-data-providers.md index 758e13a..02fadc7 100644 --- a/docs/guide-ja/output-data-providers.md +++ b/docs/guide-ja/output-data-providers.md @@ -9,7 +9,7 @@ Yii のリリースには次のデータ・プロバイダのクラスが含まれています。 -* [[yii\data\ActiveDataProvider]]: [[yii\db\Query]] または [[yii\db\ActiveQuery]] を使ってデータベースからデータを取得して、配列または [アクティブレコード](db-active-record.md) インスタンスの形式でデータを返します。 +* [[yii\data\ActiveDataProvider]]: [[yii\db\Query]] または [[yii\db\ActiveQuery]] を使ってデータベースからデータを取得して、配列または [アクティブ・レコード](db-active-record.md) インスタンスの形式でデータを返します。 * [[yii\data\SqlDataProvider]]: SQL 文を実行して、データベースのデータを配列として返します。 * [[yii\data\ArrayDataProvider]]: 大きな配列を受け取り、ページネーションと並べ替えの指定に基づいて、一部分を切り出して返します。 @@ -54,7 +54,7 @@ echo yii\grid\GridView::widget([ [[yii\data\ActiveDataProvider]] を使用するためには、その [[yii\data\ActiveDataProvider::query|query]] プロパティを構成しなければなりません。 これは、[[yii\db\Query]] または [[yii\db\ActiveQuery]] のオブジェクトを取ることが出来ます。 前者であれば、返されるデータは配列になります。 -後者であれば、返されるデータは配列または [アクティブレコード](db-active-record.md) インスタンスとすることが出来ます。 +後者であれば、返されるデータは配列または [アクティブ・レコード](db-active-record.md) インスタンスとすることが出来ます。 例えば、 ```php @@ -139,7 +139,7 @@ $models = $provider->getModels(); [[yii\data\ArrayDataProvider]] は、一つの大きな配列を扱う場合に最も適しています。 このデータ・プロバイダによって、一つまたは複数のカラムで並べ替えた配列データの 1 ページ分を返すことが出来ます。 [[yii\data\ArrayDataProvider]] を使用するためには、全体の大きな配列として [[yii\data\ArrayDataProvider::allModels|allModels]] プロパティを指定しなければなりません。 -この大きな配列の要素は、連想配列 (例えば [DAO](db-dao.md) のクエリ結果) またはオブジェクト (例えば [アクティブレコード](db-active-record.md) インスタンス) とすることが出来ます。 +この大きな配列の要素は、連想配列 (例えば [DAO](db-dao.md) のクエリ結果) またはオブジェクト (例えば [アクティブ・レコード](db-active-record.md) インスタンス) とすることが出来ます。 例えば、 ```php diff --git a/docs/guide-ja/output-data-widgets.md b/docs/guide-ja/output-data-widgets.md index 23f1870..cfd8686 100644 --- a/docs/guide-ja/output-data-widgets.md +++ b/docs/guide-ja/output-data-widgets.md @@ -12,7 +12,7 @@ DetailView DetailView は単一のデータ [[yii\widgets\DetailView::$model|モデル]] の詳細を表示します。 モデルを標準的な書式で表示する場合 (例えば、全てのモデル属性をそれぞれテーブルの一行として表示する場合) に最も適しています。 -モデルは [[\yii\base\Model]] またはそのサブ・クラス、例えば [アクティブレコード](db-active-record.md) のインスタンスか、連想配列かのどちらかにすることが出来ます。 +モデルは [[\yii\base\Model]] またはそのサブ・クラス、例えば [アクティブ・レコード](db-active-record.md) のインスタンスか、連想配列かのどちらかにすることが出来ます。 DetailView は [[yii\widgets\DetailView::$attributes]] プロパティを使って、モデルのどの属性が表示されるべきか、また、どういうフォーマットで表示されるべきかを決定します。 利用できるフォーマットのオプションについては、[フォーマッタのセクション](output-formatting.md) を参照してください。 @@ -360,7 +360,7 @@ echo GridView::widget([ データをフィルタリングするためには、GridView は検索基準を表す [モデル](structure-models.md) を必要とします。 検索基準は、通常は、グリッドビューのテーブルのフィルタのフィールドから取得されます。 -[アクティブレコード](db-active-record.md) を使用している場合は、必要な機能を提供する検索用のモデル・クラスを作成するのが一般的なプラクティスです (あなたに代って [Gii](start-gii.md) が生成してくれます)。 +[アクティブ・レコード](db-active-record.md) を使用している場合は、必要な機能を提供する検索用のモデル・クラスを作成するのが一般的なプラクティスです (あなたに代って [Gii](start-gii.md) が生成してくれます)。 このクラスが、グリッドビューのテーブルに表示されるフィルタ・コントロールのための検証規則を定義し、 検索基準に従って修正されたクエリを持つデータ・プロバイダを返す `search()` メソッドを提供します。 @@ -527,7 +527,7 @@ $query->andFilterWhere(['>=', 'creation_date', $this->createdFrom]) ### モデルのリレーションを扱う -GridView でアクティブレコードを表示するときに、リレーションのカラムの値、例えば、単に投稿者の `id` というのではなく、投稿者の名前を表示するという場合に遭遇するかも知れません。 +GridView でアクティブ・レコードを表示するときに、リレーションのカラムの値、例えば、単に投稿者の `id` というのではなく、投稿者の名前を表示するという場合に遭遇するかも知れません。 `Post` モデルが `author` という名前のリレーションを持っていて、その投稿者のモデルが `name` という属性を持っているなら、[[yii\grid\GridView::$columns]] の属性名を `author.name` と定義します。 そうすれば、GridView が投稿者の名前を表示するようになります。 ただし、並べ替えとフィルタリングは、デフォルトでは有効になりません。 @@ -611,7 +611,7 @@ $query->andFilterWhere(['LIKE', 'author.name', $this->getAttribute('author.name' > $dataProvider->sort->defaultOrder = ['author.name' => SORT_ASC]; > ``` -> Info: `joinWith` およびバックグラウンドで実行されるクエリの詳細については、[アクティブレコード - リレーションを使ってテーブルを結合する](db-active-record.md#joining-with-relations) を参照してください。 +> Info: `joinWith` およびバックグラウンドで実行されるクエリの詳細については、[アクティブ・レコード - リレーションを使ってテーブルを結合する](db-active-record.md#joining-with-relations) を参照してください。 #### SQL ビューを使って、データのフィルタリング・並べ替え・表示をする @@ -673,7 +673,7 @@ class UserView extends ActiveRecord } ``` -このようにした後は、この UserView アクティブレコードを検索用のモデルとともに使うことが出来ます。 +このようにした後は、この UserView アクティブ・レコードを検索用のモデルとともに使うことが出来ます。 並べ替えやフィルタリングの属性を追加で定義する必要はありません。 全ての属性がそのままで動作します。 この手法にはいくつかの長所と短所があることに注意してください。 diff --git a/docs/guide-ja/output-sorting.md b/docs/guide-ja/output-sorting.md index 4a1b0ee..211ac4a 100644 --- a/docs/guide-ja/output-sorting.md +++ b/docs/guide-ja/output-sorting.md @@ -40,7 +40,7 @@ $articles = Article::find() 上記の例では、[[yii\data\Sort|Sort]] オブジェクトに対して二つの属性が宣言されています。 すなわち、`age` と `name` です。 -`age` 属性は `Article` アクティブレコード・クラスの `age` 属性に対応する *単純な* 属性です。 +`age` 属性は `Article` アクティブ・レコード・クラスの `age` 属性に対応する *単純な* 属性です。 これは、次の宣言と等価です。 ```php diff --git a/docs/guide-ja/rest-controllers.md b/docs/guide-ja/rest-controllers.md index c0e37b8..798e061 100644 --- a/docs/guide-ja/rest-controllers.md +++ b/docs/guide-ja/rest-controllers.md @@ -5,8 +5,8 @@ Yii は、RESTful アクションを作成する仕事を簡単にするための二つの基底コントローラ・クラスを提供しています。 すなわち、[[yii\rest\Controller]] と [[yii\rest\ActiveController]] です。 -二つのコントローラの違いは、後者は [アクティブレコード](db-active-record.md) として表現されるリソースの扱いに特化した一連のアクションをデフォルトで提供する、という点にあります。 -従って、あなたが [アクティブレコード](db-active-record.md) を使っていて、提供される組み込みのアクションに満足できるのであれば、コントローラ・クラスを [[yii\rest\ActiveController]] から拡張することを検討すると良いでしょう。 +二つのコントローラの違いは、後者は [アクティブ・レコード](db-active-record.md) として表現されるリソースの扱いに特化した一連のアクションをデフォルトで提供する、という点にあります。 +従って、あなたが [アクティブ・レコード](db-active-record.md) を使っていて、提供される組み込みのアクションに満足できるのであれば、コントローラ・クラスを [[yii\rest\ActiveController]] から拡張することを検討すると良いでしょう。 そうすれば、最小限のコードで強力な RESTful API を作成することが出来ます。 [[yii\rest\Controller]] と [[yii\rest\ActiveController]] は、ともに、下記の機能を提供します。 diff --git a/docs/guide-ja/rest-quick-start.md b/docs/guide-ja/rest-quick-start.md index ab20150..16d4f17 100644 --- a/docs/guide-ja/rest-quick-start.md +++ b/docs/guide-ja/rest-quick-start.md @@ -4,7 +4,7 @@ Yii は、RESTful ウェブサービス API を実装する仕事を簡単にするために、一揃いのツールを提供しています。 具体的に言えば、RESTful API に関する次の機能をサポートしています。 -* [アクティブレコード](db-active-record.md) のための共通 API をサポートした迅速なプロトタイプ作成 +* [アクティブ・レコード](db-active-record.md) のための共通 API をサポートした迅速なプロトタイプ作成 * レスポンス形式のネゴシエーション (デフォルトで JSON と XML をサポート) * 出力フィールドの選択をサポートした、カスタマイズ可能なオブジェクトのシリアライゼーション * コレクション・データと検証エラーの適切な書式設定 @@ -20,7 +20,7 @@ Yii は、RESTful ウェブサービス API を実装する仕事を簡単にす 以下においては、例を使って、どのようにして最小限のコーディング労力で一組の RESTful API を構築することが出来るかを説明します。 ユーザのデータを RESTful API によって公開したいと仮定しましょう。 -ユーザのデータは `user` という DB テーブルに保存されており、それにアクセスするための [アクティブレコード](db-active-record.md) クラス `app\models\User` が既に作成済みであるとします。 +ユーザのデータは `user` という DB テーブルに保存されており、それにアクセスするための [アクティブ・レコード](db-active-record.md) クラス `app\models\User` が既に作成済みであるとします。 ## コントローラを作成する diff --git a/docs/guide-ja/rest-resources.md b/docs/guide-ja/rest-resources.md index cc8cd4f..74fba79 100644 --- a/docs/guide-ja/rest-resources.md +++ b/docs/guide-ja/rest-resources.md @@ -11,7 +11,7 @@ MVC の枠組の中では、リソースは [モデル](structure-models.md) と * [[yii\base\Model]] は [入力値の検証](input-validation.md) をサポートしています。 これは、RESTful API がデータ入力をサポートする必要がある場合に役に立ちます。 * [[yii\db\ActiveRecord]] は DB データのアクセスと操作に対する強力なサポートを提供しています。 - リソース・データがデータベースに保存されているときは、アクティブレコードが最適の選択です。 + リソース・データがデータベースに保存されているときは、アクティブ・レコードが最適の選択です。 このセクションでは、主として、[[yii\base\Model]] クラス (またはその子クラス) から拡張したリソース・クラスにおいて、RESTful API を通じて返すことが出来るデータを指定する方法を説明します。 リソース・クラスが [[yii\base\Model]] から拡張したものでない場合は、全てのパブリックなメンバ変数が返されます。 diff --git a/docs/guide-ja/runtime-bootstrapping.md b/docs/guide-ja/runtime-bootstrapping.md index 28ca5c8..2d70842 100644 --- a/docs/guide-ja/runtime-bootstrapping.md +++ b/docs/guide-ja/runtime-bootstrapping.md @@ -23,7 +23,7 @@ ブートストラップの仕事は *全て* のリクエストを処理する前に、毎回しなければなりませんので、この過程を軽いものに保って可能な限り最適化することは非常に重要なことです。 あまりに多くのブートストラップ・コンポーネントを登録しないように努めてください。 -ブートストラップ・コンポーネントが必要になるのは、リクエスト処理のライフ・サイクル全体に関与する必要がある場合だけです。 +ブートストラップ・コンポーネントが必要になるのは、リクエスト処理のライフサイクル全体に関与する必要がある場合だけです。 例えば、モジュールが追加の URL 解析規則を登録する必要がある場合は、モジュールを [bootstrap プロパティ](structure-applications.md#bootstrap) のリストに挙げなければなりません。 なぜなら、URL 規則を使ってリクエストが解決される前に、新しい URL 規則を有効にしなければならないからです。 diff --git a/docs/guide-ja/runtime-overview.md b/docs/guide-ja/runtime-overview.md index 1bfed53..e35d946 100644 --- a/docs/guide-ja/runtime-overview.md +++ b/docs/guide-ja/runtime-overview.md @@ -17,6 +17,6 @@ Yii のアプリケーションがリクエストを処理するときは、毎 次の図は、アプリケーションがどのようにしてリクエストを処理するかを示すものです。 -![リクエストのライフ・サイクル](images/request-lifecycle.png) +![リクエストのライフサイクル](images/request-lifecycle.png) このセクションでは、これらのステップのいくつかについて、どのように動作するかを詳細に説明します。 diff --git a/docs/guide-ja/security-authentication.md b/docs/guide-ja/security-authentication.md index b146742..43357a1 100644 --- a/docs/guide-ja/security-authentication.md +++ b/docs/guide-ja/security-authentication.md @@ -45,7 +45,7 @@ return [ 特定のメソッドが必要でない場合は、中身を空にして実装しても構いません。 例えば、あなたのアプリケーションが純粋なステート・レス RESTful アプリケーションであるなら、実装する必要があるのは [[yii\web\IdentityInterface::findIdentityByAccessToken()|findIdentityByAccessToken()]] と [[yii\web\IdentityInterface::getId()|getId()]] だけであり、他のメソッドは全て中身を空にしておくことが出来ます。 -次の例では、[[yii\web\User::identityClass|ユーザ識別情報クラス]] は、`user` データベース・テーブルと関連付けられた [アクティブレコード](db-active-record.md) クラスとして実装されています。 +次の例では、[[yii\web\User::identityClass|ユーザ識別情報クラス]] は、`user` データベース・テーブルと関連付けられた [アクティブ・レコード](db-active-record.md) クラスとして実装されています。 ```php Note: ユーザ識別情報クラスである `User` と [[yii\web\User]] を混同してはいけません。 - 前者は認証のロジックを実装するクラスであり、普通は、ユーザの認証情報を保存する何らかの持続的ストレージと関連付けられた [アクティブレコード](db-active-record.md) クラスとして実装されます。 + 前者は認証のロジックを実装するクラスであり、普通は、ユーザの認証情報を保存する何らかの持続的ストレージと関連付けられた [アクティブ・レコード](db-active-record.md) クラスとして実装されます。 後者はユーザの認証状態の管理に責任を持つアプリケーション・コンポーネントです。 diff --git a/docs/guide-ja/security-authorization.md b/docs/guide-ja/security-authorization.md index b0d129f..bea65d8 100644 --- a/docs/guide-ja/security-authorization.md +++ b/docs/guide-ja/security-authorization.md @@ -601,7 +601,7 @@ public function behaviors() 'allow' => true, 'actions' => ['update'], 'roles' => ['updatePost'], - 'roleParams' => ['postId' => Yii::$app->request->get('id')]; + 'roleParams' => ['postId' => Yii::$app->request->get('id')], ], ``` diff --git a/docs/guide-ja/security-best-practices.md b/docs/guide-ja/security-best-practices.md index eadb0d7..7a0124c 100644 --- a/docs/guide-ja/security-best-practices.md +++ b/docs/guide-ja/security-best-practices.md @@ -69,7 +69,7 @@ SELECT * FROM user WHERE username = ''; DROP TABLE user; --' これは有効なクエリで、空のユーザ名を持つユーザを探してから、`user` テーブルを削除します。 おそらく、ウェブ・サイトは破壊されて、データは失われることになります (定期的なバックアップは設定済みですよね、ね? )。 -Yii においては、ほとんどのデータベース・クエリは、PDO のプリペアド・ステートメントを適切に使用する [アクティブレコード](db-active-record.md) を経由して実行されます。 +Yii においては、ほとんどのデータベース・クエリは、PDO のプリペアド・ステートメントを適切に使用する [アクティブ・レコード](db-active-record.md) を経由して実行されます。 プリペアド・ステートメントの場合は、上で説明したようなクエリの改竄は不可能です。 それでも、[生のクエリ](db-dao.md) や [クエリ・ビルダ](db-query-builder.md) を必要とする場合はあります。 diff --git a/docs/guide-ja/start-databases.md b/docs/guide-ja/start-databases.md index a90666d..93289bd 100644 --- a/docs/guide-ja/start-databases.md +++ b/docs/guide-ja/start-databases.md @@ -2,13 +2,15 @@ ================== このセクションでは、`country` という名前のデータベース・テーブルから読み出した国データを表示する新しいページの作り方を説明します。 -この目的を達するために、データベース接続を構成し、[アクティブレコード](db-active-record.md) クラスを作成し、[アクション](structure-controllers.md) を定義し、そして [ビュー](structure-views.md) を作成します。 +この目的を達するために、データベース接続を構成し、 +[アクティブ・レコード](db-active-record.md) クラスを作成し、[アクション](structure-controllers.md) を定義し、 +そして [ビュー](structure-views.md) を作成します。 このチュートリアルを通じて、次のことを学びます。 * DB 接続を構成する方法 -* アクティブレコードのクラスを定義する方法 -* アクティブレコードのクラスを使ってデータを検索する方法 +* アクティブ・レコードのクラスを定義する方法 +* アクティブ・レコードのクラスを使ってデータを検索する方法 * 改ページを伴う仕方でビューにデータを表示する方法 このセクションを完了するためには、データベースを使うことについて基本的な知識と経験が無ければならないことに注意してください。 @@ -19,11 +21,9 @@ ---------------------- まず初めに、`yii2basic` という名前のデータベースを作成してください。このデータベースからアプリケーションにデータを読み出すことになります。 -Yii は多数のデータベース製品に対するサポートを内蔵していますので、作成するデータベースは、SQLite、MySQL、PosttreSQL、MSSQL または Oracle から選ぶことが出来ます。 -以下の説明では、話を単純にするために、MySQL を前提とします。 +Yii は多数のデータベース製品に対するサポートを内蔵しており、作成するデータベースは、SQLite、MySQL、PosttreSQL、MSSQL または Oracle から選ぶことが出来ます。以下の説明では、話を単純にするために、MySQL を前提とします。 -次に、データベースに `country` という名前のテーブルを作り、いくつかのサンプル・データを挿入します。 -そうするためには、次の SQL 文を実行することが出来ます。 +次に、データベースに `country` という名前のテーブルを作り、いくつかのサンプル・データを挿入します。そうするためには、次の SQL 文を実行することが出来ます。 ```sql CREATE TABLE `country` ( @@ -46,11 +46,11 @@ INSERT INTO `country` VALUES ('US','United States',322976000); この時点で、あなたは `yii2basic` という名前のデータベースを持ち、その中に三つのカラムを持つ `country` というテーブルがあり、`country` テーブルは 10 行のデータを持っている、ということになります。 - DB 接続を構成する ----------------- -先に進む前に、[PDO](http://www.php.net/manual/en/book.pdo.php) PHP 拡張および使用しているデータベースの PDO ドライバ (例えば、MySQL のための `pdo_mysql`) の両方をインストール済みであることを確認してください。 +先に進む前に、[PDO](http://www.php.net/manual/en/book.pdo.php) PHP 拡張および使用しているデータベースの PDO ドライバ +(例えば、MySQL のための `pdo_mysql`) の両方をインストール済みであることを確認してください。 アプリケーションがリレーショナル・データベースを使う場合、これは基本的な必要条件です。 これらがインストール済みなら、`config/db.php` というファイルを開いて、あなたのデータベースに適合するようにパラメータを変更してください。 @@ -68,14 +68,16 @@ return [ ]; ``` -この `config/db.php` というファイルは典型的なファイルベースの [構成情報](concept-configurations.md) ツールです。 -この構成情報ファイルが、背後のデータベースに対する SQL クエリの実行を可能にする [[yii\db\Connection]] インスタンスの作成と初期化に必要なパラメータを指定するものです。 +この `config/db.php` というファイルは典型的なファイル・ベースの [構成情報](concept-configurations.md) ツールです。 +この構成情報ファイルが、背後のデータベースに対する SQL クエリの実行を可能にする [[yii\db\Connection]] +インスタンスの作成と初期化に必要なパラメータを指定するものです。 上記のようにして構成された DB 接続は、アプリケーション・コードの中で `Yii::$app->db` という式でアクセスすることが出来ます。 > Info: `config/db.php` は、メインのアプリケーション構成情報ファイルである `config/web.php` によってインクルードされます。 この `config/web.php` が [アプリケーション](structure-applications.md) インスタンスが初期化される仕方を指定するものです。 詳しい情報については、[構成情報](concept-configurations.md) のセクションを参照してください。 + Yii がサポートを内蔵していないデータベースを扱う必要がある場合は、以下のエクステンションの利用を検討してください。 - [Informix](https://github.com/edgardmessias/yii2-informix) @@ -83,10 +85,11 @@ Yii がサポートを内蔵していないデータベースを扱う必要が - [Firebird](https://github.com/edgardmessias/yii2-firebird) -アクティブレコードを作成する ----------------------------- +アクティブ・レコードを作成する +------------------------------ -`country` テーブルの中のデータを表現し取得するために、[アクティブレコード](db-active-record.md) から派生した `Country` という名前のクラスを作成し、それを `models/Country.php` というファイルに保存します。 +`country` テーブルの中のデータを表現し取得するために、[アクティブ・レコード](db-active-record.md) から派生した `Country` という名前のクラスを作成し、 +それを `models/Country.php` というファイルに保存します。 ```php Info: クラス名とテーブル名を直接に合致させることが出来ない場合は、[[yii\db\ActiveRecord::tableName()]] メソッドをオーバーライドして、関連づけられたテーブル名を明示的に指定することが出来ます。 +> Info: クラス名とテーブル名を直接に合致させることが出来ない場合は、[[yii\db\ActiveRecord::tableName()]] +メソッドをオーバーライドして、関連づけられたテーブル名を明示的に指定することが出来ます。 `Country` クラスを使うことによって、以下のコード断片で示すように、`country` テーブルの中のデータを簡単に操作することが出来ます。 @@ -124,8 +128,7 @@ $country->name = 'U.S.A.'; $country->save(); ``` -> Info: アクティブレコードは、オブジェクト指向の流儀でデータベースのデータにアクセスし、操作する強力な方法です。 -[アクティブレコード](db-active-record.md) のセクションで、詳細な情報を得ることが出来ます。 +> Info: アクティブ・レコードは、オブジェクト指向の流儀でデータベースのデータにアクセスし、操作する強力な方法です。[アクティブ・レコード](db-active-record.md) のセクションで、詳細な情報を得ることが出来ます。 もう一つの方法として、[データベース・アクセス・オブジェクト](db-dao.md) と呼ばれる、より低レベルなデータ・アクセス方法を使ってデータベースを操作することも出来ます。 @@ -172,13 +175,14 @@ class CountryController extends Controller 上記のコードを `controllers/CountryController.php` というファイルに保存します。 -`index` アクションは `Country::find()` を呼び出します。 -このアクティブレコードのメソッドは DB クエリを構築して、`country` テーブルから全てのデータを読み出します。 +`index` アクションは `Country::find()` を呼び出します。このアクティブ・レコードのメソッドは DB クエリを構築して、`country` テーブルから全てのデータを読み出します。 一回のリクエストで返される国の数を制限するために、クエリは [[yii\data\Pagination]] オブジェクトの助けを借りてページ付けされます。 `Pagination` オブジェクトは二つの目的に奉仕します。 -* クエリによって表現される SQL 文に `offset` 句と `limit` 句をセットして、一度に一ページ分のデータだけ (1ページ最大5行) を返すようにします。 -* 次の項で説明されるように、一連のページ・ボタンからなるページャをビューに表示するために使われます。 +* クエリによって表現される SQL 文に `offset` 句と `limit` 句をセットして、 + 一度に一ページ分のデータだけ (1ページ最大5行) を返すようにします。 +* 次の項で説明されるように、一連のページ・ボタンからなるページャを + ビューに表示するために使われます。 コードの最後で、`index` アクションは `index` と言う名前のビューをレンダリングしています。 このとき、国データだけでなく、そのページネーション情報がビューに渡されます。 @@ -226,8 +230,7 @@ http://hostname/index.php?r=country%2Findex ![国リスト](images/start-country-list.png) -最初、ページは5つの国を表示しています。 -そして、国リストの下には、4つのボタンを持ったページャがあります。 +最初、ページは5つの国を表示しています。そして、国リストの下には、4つのボタンを持ったページャがあります。 "2" のボタンをクリックすると、ページはデータベースにある次の5つの国、すなわち、2ページ目のレコードを表示します。 注意深く観察すると、ブラウザの URL も次のように変ったことに気付くでしょう。 @@ -235,16 +238,17 @@ http://hostname/index.php?r=country%2Findex http://hostname/index.php?r=country%2Findex&page=2 ``` -舞台裏では、[[yii\data\Pagination|Pagination]] が、データセットをページ付けするのに必要な全ての機能を提供しています。 +舞台裏では、[[yii\data\Pagination|Pagination]] が、データ・セットをページ付けするのに必要な全ての機能を提供しています。 * 初期状態では、[[yii\data\Pagination|Pagination]] は、1ページ目を表しています。 - これを反映して、国の SELECT クエリは `LIMIT 5 OFFSET 0` という句を伴うことになります。 - その結果、最初の5つの国が取得されて表示されます。 -* [[yii\widgets\LinkPager|LinkPager]] ウィジェットは、[[yii\data\Pagination::createUrl()|Pagination]] によって作成された URL を使ってページ・ボタンをレンダリングします。 + これを反映して、国の SELECT クエリは `LIMIT 5 OFFSET 0` という句を伴うことになります。その結果、最初の5つの国が取得されて表示されます。 +* [[yii\widgets\LinkPager|LinkPager]] ウィジェットは、[[yii\data\Pagination::createUrl()|Pagination]] によって作成された + URL を使ってページ・ボタンをレンダリングします。 URL は、別々のページ番号を表現する `page` というクエリ・パラメータを含んだものになります。 -* ページボタン "2" をクリックすると、`country/index` のルートに対する新しいリクエストが発行され、処理されます。 +* ページ・ボタン "2" をクリックすると、`country/index` のルートに対する新しいリクエストが発行され、処理されます。 [[yii\data\Pagination|Pagination]] が URL から `page` クエリ・パラメータを読み取って、カレント・ページ番号を 2 にセットします。 - こうして、新しい国のクエリは `LIMIT 5 OFFSET 5` という句を持ち、次の5つの国を表示のために返すことになります。 + こうして、新しい国のクエリは `LIMIT 5 OFFSET 5` という句を持ち、 + 次の5つの国を表示のために返すことになります。 まとめ @@ -253,6 +257,7 @@ http://hostname/index.php?r=country%2Findex&page=2 このセクションでは、データベースを扱う方法を学びました。 また、[[yii\data\Pagination]] と [[yii\widgets\LinkPager]] の助けを借りて、ページ付けされたデータを取得し表示する方法も学びました。 -次のセクションでは、[Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide-ja/README.md) と呼ばれる強力なコード生成ツールを使う方法を学びます。 -このツールは、データベース・テーブルのデータを取り扱うための「作成・読出し・更新・削除 (CRUD)」操作のような、通常必要とされることが多いいくつかの機能の迅速な実装を手助けしてくれるものです。 +次のセクションでは、[Gii](https://www.yiiframework.com/extension/yiisoft/yii2-gii/doc/guide) と呼ばれる強力なコード生成ツールを使う方法を学びます。 +このツールは、データベース・テーブルのデータを取り扱うための「作成・読出し・更新・削除 (CRUD)」操作のような、 +通常必要とされることが多い諸機能の迅速な実装を手助けしてくれるものです。 実際のところ、あなたがたった今書いたばかりのコードは、Gii ツールを使えば、全部、Yii が自動的に生成してくれるものです。 diff --git a/docs/guide-ja/start-forms.md b/docs/guide-ja/start-forms.md index 635b7ec..fb22618 100644 --- a/docs/guide-ja/start-forms.md +++ b/docs/guide-ja/start-forms.md @@ -3,9 +3,10 @@ このセクションでは、ユーザからデータを取得するためのフォームを持つ新しいページを作る方法を説明します。 このページは名前のインプット・フィールドとメールのインプット・フィールドを持つフォームを表示します。 -ユーザからこれら二つの情報を受け取った後、ページは入力された値を確認のためにエコー・バックします。 +ユーザからこれら二つの情報を受け取った後、ウェブ・ページは確認のために入力された値をエコー・バックします。 -この目的を達するために、一つの [アクション](structure-controllers.md) と 二つの [ビュー](structure-views.md) を作成する以外に、一つの [モデル](structure-models.md) をも作成します。 +この目的を達するために、一つの [アクション](structure-controllers.md) と 二つの [ビュー](structure-views.md) を作成する以外に、 +一つの [モデル](structure-models.md) をも作成します。 このチュートリアルを通じて、次の方法を学びます。 @@ -17,7 +18,8 @@ モデルを作成する ---------------- -ユーザに入力してもらうデータは、下に示されているように `EntryForm` モデル・クラスとして表現され、`models/EntryForm.php` というファイルに保存されます。 +ユーザに入力してもらうデータは、下に示されているように `EntryForm` モデル・クラスとして表現され、 +`models/EntryForm.php` というファイルに保存されます。 クラス・ファイルの命名規約についての詳細は [クラスのオートロード](concept-autoloading.md) のセクションを参照してください。 ```php @@ -44,7 +46,7 @@ class EntryForm extends Model ``` このクラスは、Yii によって提供される基底クラス [[yii\base\Model]] を拡張するものです。 -通常、この基底クラスがフォームデータを表現するのに使われます。 +通常、この基底クラスがフォーム・データを表現するのに使われます。 > Info: [[yii\base\Model]] はデータベース・テーブルと関連*しない*モデル・クラスの親として使われます。 データベース・テーブルと対応するモデル・クラスでは、通常は [[yii\db\ActiveRecord]] が親になります。 @@ -114,7 +116,8 @@ class SiteController extends Controller アクションは最初に `EntryForm` オブジェクトを生成します。 次に、モデルに `$_POST` のデータ、Yii においては [[yii\web\Request::post()]] によって提供されるデータを投入しようと試みます。 -モデルへのデータ投入が成功した場合(つまり、ユーザが HTML フォームを送信した場合)、アクションは[[yii\base\Model::validate()|validate()]] を呼んで、入力された値が有効なものであるかどうかを確認します。 +モデルへのデータ投入が成功した場合(つまり、ユーザが HTML フォームを送信した場合)、アクションは[[yii\base\Model::validate()|validate()]] を呼んで、 +入力された値が有効なものであるかどうかを確認します。 > Info: `Yii::$app` という式は [アプリケーション](structure-applications.md) インスタンスを表現します。 これはグローバルにアクセス可能なシングルトンです。 @@ -122,10 +125,12 @@ class SiteController extends Controller 上記のコードでは、アプリケーション・インスタンスの `request` コンポーネントが `$_POST` データにアクセスするために使われています。 すべてが適正である場合、アクションは `entry-confirm` という名前のビューを表示して、データの送信が成功したことをユーザに確認させます。 -データが送信されなかったり、データがエラーを含んでいたりする場合は、`entry` ビューが表示され、その中で HTML フォームが (もし有れば) 検証エラーのメッセージとともに表示されます。 +データが送信されなかったり、データがエラーを含んでいたりする場合は、`entry` ビューが表示され、 +その中で HTML フォームが (もし有れば) 検証エラーのメッセージとともに表示されます。 > Note: この簡単な例では、有効なデータ送信に対して単純に確認ページを表示しています。 - 実際の仕事では、[フォーム送信の諸問題](http://en.wikipedia.org/wiki/Post/Redirect/Get) を避けるために、[[yii\web\Controller::refresh()|refresh()]] または [[yii\web\Controller::redirect()|redirect()]] を使うことを考慮すべきです。 + 実際の仕事では、[フォーム送信の諸問題](http://en.wikipedia.org/wiki/Post/Redirect/Get) を避けるために、 + [[yii\web\Controller::refresh()|refresh()]] または [[yii\web\Controller::redirect()|redirect()]] を使うことを考慮すべきです。 ビューを作成する @@ -168,7 +173,8 @@ use yii\widgets\ActiveForm; ``` -このビューは HTML フォームを構築するのに、[[yii\widgets\ActiveForm|ActiveForm]] と呼ばれる強力な [ウィジェット](structure-widgets.md) を使います。 +このビューは HTML フォームを構築するのに、[[yii\widgets\ActiveForm|ActiveForm]] と呼ばれる強力な +[ウィジェット](structure-widgets.md) を使います。 ウィジェットの `begin()` メソッドと `end()` メソッドが、それぞれ、フォームの開始タグと終了タグをレンダリングします。 この二つのメソッドの呼び出しの間に、[[yii\widgets\ActiveForm::field()|field()]] メソッドによってインプット・フィールドが作成されます。 最初のインプット・フィールドは "name" のデータ、第二のインプット・フィールドは "email" のデータのためのものです。 @@ -184,34 +190,38 @@ use yii\widgets\ActiveForm; http://hostname/index.php?r=site%2Fentry ``` -二つのインプット・フィールドを持つフォームを表示するページが表示されるでしょう。 -それぞれのインプット・フィールドの前には、どんなデータを入力すべきかを示すラベルがあります。 +二つのインプット・フィールドを持つフォームを表示するページが表示されるでしょう。それぞれのインプット・フィールドの前には、どんなデータを入力すべきかを示すラベルがあります。 何も入力せずに、あるいは、無効なメール・アドレスを入力して送信ボタンをクリックすると、それぞれ問題のあるインプット・フィールドの後ろにエラー・メッセージが表示されます。 ![検証エラーのあるフォーム](images/start-form-validation.png) -有効な名前とメール・アドレスを入力してから送信ボタンをクリックすると、たった今入力したデータを表示する新しいページが表示されます。 +有効な名前とメール・アドレスを入力してから送信ボタンをクリックすると、 +たった今入力したデータを表示する新しいページが表示されます。 ![データ入力の確認](images/start-entry-confirmation.png) + ### 魔法の説明 あなたは、舞台裏で HTML フォームがどのように動いているのか、不思議に思うかも知れません。 -なぜなら、フォームが、ほとんど魔法のように、各インプット・フィールドのラベルを表示し、データを正しく入力しなかった場合には、ページをリロードすることなく、エラー・メッセージを表示するからです。 +なぜなら、フォームが、ほとんど魔法のように、各インプット・フィールドのラベルを表示し、データを正しく入力しなかった場合には、 +ページをリロードすることなく、エラー・メッセージを表示するからです。 そう、データの検証は、最初に JavaScript を使ってクライアント・サイドで実行され、次に PHP によってサーバ・サイドで実行されます。 -[[yii\widgets\ActiveForm]] は、賢いことに、`EntryForm` で宣言した検証規則を抽出し、それを実行可能な JavaScript コードに変換して、JavaScript を使ってデータ検証を実行します。 +[[yii\widgets\ActiveForm]] は、賢いことに、`EntryForm` で宣言した検証規則を抽出し、それを実行可能な JavaScript コードに変換して、 +JavaScript を使ってデータ検証を実行します。 ブラウザで JavaScript を無効にした場合でも、`actionEntry()` メソッドで示されているように、サーバ・サイドでの検証は引き続き実行されます。 これにより、どのような状況であっても、データの有効性が保証されます。 > Warning: クライアント・サイドの検証は、ユーザにとってのより良い使い心地のために利便性を提供するものです。 - クライアント・サイドの検証の有無にかかわらず、サーバ・サイドの検証は常に必要とされます。 + クライアント・サイドの検証の有無にかかわらず、サーバ・サイドの検証は常に必要です。 インプット・フィールドのラベルは、モデルのプロパティ名を使用して、`field()` メソッドによって生成されます。 例えば、`name` というプロパティから `Name` というラベルが生成されます。 -ビューの中で、下記のコードのように、ラベルをカスタマイズすることも出来ます。 +ビューの中で、下記のコードのように、 +ラベルをカスタマイズすることも出来ます。 ```php field($model, 'name')->label('お名前') ?> @@ -220,14 +230,14 @@ http://hostname/index.php?r=site%2Fentry > Info: Yii はこのようなウィジェットを数多く提供して、複雑で動的なビューを素速く作成することを手助けしてくれます。 後で学ぶように、新しいウィジェットを書くことも非常に簡単です。 - あなたは、将来のビュー開発を単純化するために、多くのビューコードを再利用可能なウィジェットに変換したいと思うことでしょう。 + あなたは、将来のビュー開発を単純化するために、多くのビュー・コードを再利用可能なウィジェットに変換したいと思うことでしょう。 まとめ ------ -ガイドのこのセクションにおいては、MVC アーキテクチャパターンの全ての部分に触れました。 -そして、ユーザデータを表現し、当該データを検証するモデル・クラスを作成する方法を学びました。 +ガイドのこのセクションにおいては、MVC アーキテクチャ・パターンの全ての部分に触れました。 +そして、ユーザ・データを表現し、当該データを検証するモデル・クラスを作成する方法を学びました。 また、ユーザからデータを取得する方法と、ブラウザにデータを表示して返す方法も学びました。 この作業は、アプリケーションを開発するときに、多大な時間を必要とするものになり得るものです。 diff --git a/docs/guide-ja/start-gii.md b/docs/guide-ja/start-gii.md index b4b4719..be49ca0 100644 --- a/docs/guide-ja/start-gii.md +++ b/docs/guide-ja/start-gii.md @@ -1,13 +1,13 @@ Gii でコードを生成する ====================== -このセクションでは、[Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide-ja/README.md) を使って、ウェブ・サイトの一般的な機能のいくつかを実装するコードを自動的に生成する方法を説明します。 +このセクションでは、[Gii](https://www.yiiframework.com/extension/yiisoft/yii2-gii/doc/guide) を使って、ウェブ・サイトの一般的な機能のいくつかを実装するコードを自動的に生成する方法を説明します。 Gii を使ってコードを自動生成することは、Gii のウェブ・ページに表示される指示に対して正しい情報を入力するだけのことです。 このチュートリアルを通じて、次のことを学びます。 * アプリケーションで Gii を有効にする方法 -* Gii を使って、アクティブレコードのクラスを生成する方法 +* Gii を使って、アクティブ・レコードのクラスを生成する方法 * Gii を使って、DB テーブルの CRUD 操作を実装するコードを生成する方法 * Gii によって生成されるコードをカスタマイズする方法 @@ -15,9 +15,8 @@ Gii を使ってコードを自動生成することは、Gii のウェブ・ペ Gii を開始する -------------- -[Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide-ja/README.md) は Yii の [モジュール](structure-modules.md) として提供されています。 -Gii は、アプリケーションの [[yii\base\Application::modules|modules]] プロパティの中で構成することで有効にすることが出来ます。 -アプリケーションを生成した仕方にもよりますが、`config/web.php` の構成情報ファイルの中に、多分、下記のコードが既に提供されているでしょう。 +[Gii](https://www.yiiframework.com/extension/yiisoft/yii2-gii/doc/guide) は Yii の [モジュール](structure-modules.md) として提供されています。 +Gii は、アプリケーションの [[yii\base\Application::modules|modules]] プロパティの中で構成することで有効にすることが出来ます。アプリケーションを生成した仕方にもよりますが、`config/web.php` の構成情報ファイルの中に、多分、下記のコードが既に提供されているでしょう。 ```php $config = [ ... ]; @@ -30,7 +29,8 @@ if (YII_ENV_DEV) { } ``` -上記の構成情報は、[開発環境](concept-configurations.md#environment-constants) において、アプリケーションは `gii` という名前のモジュールをインクルードすべきこと、そして `gii` は [[yii\gii\Module]] というクラスであることを記述しています。 +上記の構成情報は、[開発環境](concept-configurations.md#environment-constants) において、アプリケーションは `gii` という名前のモジュールをインクルードすべきこと、 +そして `gii` は [[yii\gii\Module]] というクラスであることを記述しています。 アプリケーションの [エントリ・スクリプト](structure-entry-scripts.md) である `web/index.php` をチェックすると、次の行があることに気付くでしょう。 これは本質的には `YII_ENV_DEV` を `true` に設定するものです。 @@ -39,8 +39,7 @@ if (YII_ENV_DEV) { defined('YII_ENV') or define('YII_ENV', 'dev'); ``` -この行のおかげで、アプリケーションは開発モードになっており、上記の構成情報によって、Gii が既に有効になっています。 -これで、下記の URL によって Gii にアクセスすることが出来ます。 +この行のおかげで、アプリケーションは開発モードになっており、上記の構成情報によって、Gii が既に有効になっています。これで、下記の URL によって Gii にアクセスすることが出来ます。 ``` http://hostname/index.php?r=gii @@ -59,28 +58,25 @@ http://hostname/index.php?r=gii ![Gii](images/start-gii.png) -アクティブレコードのクラスを生成する +アクティブ・レコードのクラスを生成する ------------------------------------ -Gii を使ってアクティブレコードのクラスを生成するためには、"Model Generator" を選びます -(Gii のインデックス・ページのリンクをクリックして下さい)。 -そして、次のようにフォームに入力します。 +Gii を使ってアクティブ・レコードのクラスを生成するためには、"Model Generator" を選びます (Gii のインデックス・ページのリンクをクリックして下さい)。そして、次のようにフォームに入力します。 * Table Name: `country` * Model Class: `Country` ![Model Generator](images/start-gii-model.png) -次に、"Preview" ボタンをクリックします。 -そうすると、結果として作成されるクラス・ファイルのリストに `models/Country.php` が挙ってきます。 -クラス・ファイルの名前をクリックすると、内容をプレビューすることが出来ます。 +次に、"Preview" ボタンをクリックします。そうすると、結果として作成されるクラス・ファイルのリストに `models/Country.php` が挙ってきます。クラス・ファイルの名前をクリックすると、内容をプレビューすることが出来ます。 -Gii を使うときに、既に同じファイルを作成していて、それを上書きしようとしている場合は、ファイル名の隣の `diff` ボタンをクリックして、生成されようとしているコードと既存のバージョンの違いを見てください。 +Gii を使うときに、既に同じファイルを作成していて、それを上書きしようとしている場合は、 +ファイル名の隣の `diff` ボタンをクリックして、 +生成されようとしているコードと既存のバージョンの違いを見てください。 ![Model Generator のプレビュー](images/start-gii-model-preview.png) -既存のファイルを上書きするときは、"overwrite" の隣のチェックボックスをチェックしてから "Generate" ボタンをクリックします。 -新しいファイルを作成するときは、単に "Generate" をクリックすれば十分です。 +既存のファイルを上書きするときは、"overwrite" の隣のチェックボックスをチェックしてから "Generate" ボタンをクリックします。新しいファイルを作成するときは、単に "Generate" をクリックすれば十分です。 次に、コードの生成が成功したことを示す確認ページが表示されます。 既存のファイルがあった場合は、それが新しく生成されたコードで上書きされたことを示すメッセージも同じく表示されます。 @@ -89,9 +85,7 @@ Gii を使うときに、既に同じファイルを作成していて、それ CRUD コードを生成する --------------------- -CRUD は Create(作成)、Read(読出し)、Update(更新)、そして Delete(削除) を意味しており、ほとんどのウェブ・サイトでデータを扱うときによく用いられる4つのタスクを表しています。 -Gii を使って CRUD 機能を作成するためには、"CRUD Generator" を選びます (Gii のインデックス・ページのリンクをクリックしてください) 。 -「国リスト」のサンプルのためには、表示されたフォームに以下のように入力します。 +CRUD は Create(作成)、Read(読出し)、Update(更新)、そして Delete(削除) を意味しており、ほとんどのウェブ・サイトでデータを扱うときによく用いられる4つのタスクを表しています。Gii を使って CRUD 機能を作成するためには、"CRUD Generator" を選びます (Gii のインデックス・ページのリンクをクリックしてください) 。「国リスト」のサンプルのためには、表示されたフォームに以下のように入力します。 * Model Class: `app\models\Country` * Search Model Class: `app\models\CountrySearch` @@ -99,8 +93,7 @@ Gii を使って CRUD 機能を作成するためには、"CRUD Generator" を ![CRUD Generator](images/start-gii-crud.png) -次に、"Preview" ボタンをクリックします。 -生成されるファイルのリストは、次のようになります。 +次に、"Preview" ボタンをクリックします。生成されるファイルのリストは、次のようになります。 ![CRUD Generator のプレビュー](images/start-gii-crud-preview.png) @@ -136,10 +129,11 @@ http://hostname/index.php?r=country%2Findex > Info: Gii は非常にカスタマイズしやすく拡張しやすいコード生成ツールとして設計されています。 これを賢く使うと、アプリケーションの開発速度を大いに高めることが出来ます。 - 詳細については、[Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide-ja/README.md) のセクションを参照してください。 + 詳細については、[Gii](https://www.yiiframework.com/extension/yiisoft/yii2-gii/doc/guide) のセクションを参照してください。 まとめ ------ -このセクションでは、Gii を使ってコードを生成して、データベース・テーブルに保存されているコンテントのための完全な CRUD 機能を実装する方法を学びました。 +このセクションでは、Gii を使ってコードを生成して、データベース・テーブルに保存されているコンテントのための +完全な CRUD 機能を実装する方法を学びました。 diff --git a/docs/guide-ja/start-hello.md b/docs/guide-ja/start-hello.md index ed95fbe..23209f0 100644 --- a/docs/guide-ja/start-hello.md +++ b/docs/guide-ja/start-hello.md @@ -2,7 +2,8 @@ ================== このセクションでは、アプリケーションに「こんにちは」という新しいページを作成する方法を説明します。 -この目的を達するために、[アクション](structure-controllers.md#creating-actions) と [ビュー](structure-views.md) を作成します。 +この目的を達するために、[アクション](structure-controllers.md#creating-actions) と +[ビュー](structure-views.md) を作成します。 * アプリケーションは、このページへのリクエストをそのアクションに送付します。 * 次にそのアクションが「こんにちは」という言葉をエンド・ユーザに示すビューを表示します。 @@ -17,7 +18,8 @@ アクションを作成する -------------------- -「こんにちは」のタスクのために、リクエストから `message` パラメータを読んで、そのメッセージをユーザに表示して返す `say` [アクション](structure-controllers.md#creating-actions) を作ります。 +「こんにちは」のタスクのために、リクエストから `message` パラメータを読んで、そのメッセージをユーザに表示して返す +`say` [アクション](structure-controllers.md#creating-actions) を作ります。 リクエストが `message` パラメータを提供しなかった場合は、アクションはデフォルト値として "こんにちは" というメッセージを表示するものとします。 > Info: [アクション](structure-controllers.md#creating-actions) は、エンド・ユーザが直接に参照して実行できるオブジェクトです。 @@ -26,8 +28,7 @@ アクションは [コントローラ](structure-controllers.md) の中で宣言されなければなりません。 話を簡単にするために、`say` アクションを既存の `SiteController` の中で宣言しましょう。 -このコントローラは `controllers/SiteController.php` というクラス・ファイルの中で定義されています。 -次のようにして、新しいアクションが始まります。 +このコントローラは `controllers/SiteController.php` というクラス・ファイルの中で定義されています。次のようにして、新しいアクションが始まります。 ```php @@ -105,13 +107,13 @@ http://hostname/index.php?r=site%2Fsay&message=Hello+World ![Hello World](images/start-hello-world.png) -この URL は、結果として、"Hello World" を表示するページになります。 -このページはアプリケーションの他のページと同じヘッダとフッタを共有しています。 +この URL は、結果として、"Hello World" を表示するページになります。このページはアプリケーションの他のページと同じヘッダとフッタを共有しています。 URL から `message` パラメータを省略すると、"こんにちは" を表示するページを見ることになるでしょう。 これは、`message` が `actionSay()` メソッドにパラメータとして渡されるものであり、それが省略された場合には、デフォルト値である `"こんにちは"` が代りに使われるからです。 -> Info: 新しいページは他のページと同じヘッダとフッタを共有していますが、それは [[yii\web\Controller::render()|render()]] メソッドが `say` ビューの結果をいわゆる [レイアウト](structure-views.md#layouts) に自動的に埋め込むからです。 +> Info: 新しいページは他のページと同じヘッダとフッタを共有していますが、それは [[yii\web\Controller::render()|render()]] メソッドが `say` ビューの結果を +いわゆる [レイアウト](structure-views.md#layouts) に自動的に埋め込むからです。 レイアウトは、この場合、`views/layouts/main.php` にあります。 上記の URL の `r` パラメータについては、さらに説明が必要でしょう。 @@ -122,10 +124,10 @@ URL から `message` パラメータを省略すると、"こんにちは" を この例で言えば、`site/say` というルートは、`SiteController` コントローラ・クラスと `say` アクションとして解決されます。 結果として、`SiteController::actionSay()` メソッドがリクエストを処理するために呼び出されます。 - > Info: アクションと同じく、コントローラもまたアプリケーションの中で一意に定義される ID を持ちます。 コントローラ ID も、アクション ID と同じ命名規則を使います。 - コントローラ・クラスの名前は、コントローラ ID からダッシュを削除し、各単語の最初の文字を大文字にし、結果として出来る文字列に `Controller` という接尾辞を追加したものとなります。 + コントローラ・クラスの名前は、コントローラ ID からダッシュを削除し、各単語の最初の文字を大文字にし、 + 結果として出来る文字列に `Controller` という接尾辞を追加したものとなります。 例えば、`post-comment` というコントローラ ID に対応するコントローラ・クラスの名前は `PostCommentController` です。 @@ -133,8 +135,7 @@ URL から `message` パラメータを省略すると、"こんにちは" を ------ このセクションでは、MVC アーキテクチャ・パターンのうちのコントローラとビューの部分に触れました。 -特定のリクエストを処理するためのアクションをコントローラの一部として作成しました。 -また、レスポンスのコンテントを作成するためのビューも作成しました。 +特定のリクエストを処理するためのアクションをコントローラの一部として作成しました。また、レスポンスのコンテントを作成するためのビューも作成しました。 この単純な例においては、使用される唯一のデータが `message` パラメータであったため、モデルは関係していません。 また、Yii におけるルートについても学びました。ルートはユーザのリクエストとコントローラのアクションとの橋渡しとして働くものです。 diff --git a/docs/guide-ja/start-installation.md b/docs/guide-ja/start-installation.md index fb76057..762ff18 100644 --- a/docs/guide-ja/start-installation.md +++ b/docs/guide-ja/start-installation.md @@ -6,10 +6,10 @@ Yii は二つの方法でインストールすることが出来ます。すな Yii の標準的なインストールを実行すると、フレームワークとプロジェクト・テンプレートの両方がダウンロードされてインストールされます。 プロジェクト・テンプレートは、いくつかの基本的な機能、例えば、ログインやコンタクト・フォームなどを実装した、動作する Yii アプリケーションです。 -そのコードは推奨される方法に従って編成されています。 -そのため、プロジェクト・テンプレートは、あなたのプロジェクトのための良い開始点としての役割を果たしうるものです。 +そのコードは推奨される方法に従って編成されています。そのため、プロジェクト・テンプレートは、あなたのプロジェクトのための良い開始点としての役割を果たしうるものです。 -ここから続くいくつかのセクションにおいては、いわゆる *ベーシック・プロジェクト・テンプレート* とともに Yii をインストールする方法、および、このテンプレート上に新しい機能を実装する方法を説明します。 +ここから続くいくつかのセクションにおいては、いわゆる *ベーシック・プロジェクト・テンプレート* とともに Yii をインストールする方法、 +および、このテンプレートの上に新しい機能を実装する方法を説明します。 Yii はもう一つ、[アドバンスト・プロジェクト・テンプレート](https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide-ja/README.md) と呼ばれるテンプレートも提供しています。 こちらは、チーム開発環境において多層構造のアプリケーションを開発するときに使用する方が望ましいものです。 @@ -23,7 +23,7 @@ Composer によるインストール ### Composer をインストールする -まだ Composer をインストールしていない場合は、[getcomposer.org]() の指示に従ってインストールすることが出来ます。 +まだ Composer をインストールしていない場合は、[getcomposer.org](https://getcomposer.org/download/) の指示に従ってインストールすることが出来ます。 Linux や Mac OS X では、次のコマンドを実行します。 ```bash @@ -33,10 +33,13 @@ mv composer.phar /usr/local/bin/composer Windows では、[Composer-Setup.exe](https://getcomposer.org/Composer-Setup.exe) をダウンロードして実行します。 -何か問題が生じたときは、[Composer ドキュメントのトラブル・シューティングのセクション](https://getcomposer.org/doc/articles/troubleshooting.md) を参照してください。 -Composer は初めてだという場合は、少なくとも、Composer ドキュメントの [基本的な使い方のセクション](https://getcomposer.org/doc/01-basic-usage.md) も参照することを推奨します。 +何か問題が生じたときは、[Composer ドキュメントのトラブル・シューティングのセクション](https://getcomposer.org/doc/articles/troubleshooting.md) +を参照してください。 +Composer は初めてだという場合は、少なくとも、Composer ドキュメントの [基本的な使い方のセクション](https://getcomposer.org/doc/01-basic-usage.md) +も参照することを推奨します。 -このガイドでは、composer のコマンドの全ては、あなたが composer を [グローバル](https://getcomposer.org/doc/00-intro.md#globally) にインストールし、`composer` コマンドとして使用できるようにしているものと想定しています。 +このガイドでは、composer のコマンドの全ては、あなたが composer を [グローバル](https://getcomposer.org/doc/00-intro.md#globally) にインストールし、 +`composer` コマンドとして使用できるようにしているものと想定しています。 そうではなく、ローカル・ディレクトリにある `composer.phar` を使おうとする場合は、例に出てくるコマンドをそれに合せて修正しなければなりません。 以前に Composer をインストールしたことがある場合は、確実に最新のバージョンを使うようにしてください。 @@ -44,7 +47,7 @@ Composer は `composer self-update` コマンドを実行してアップデー > Note: Yii のインストールを実行する際に、Composer は大量の情報を Github API から要求する必要が生じます。 > リクエストの数は、あなたのアプリケーションが持つ依存の数によりますが、**Github API レート制限** より大きくなることがあり得ます。 -> この制限にかかった場合、Composer は Github API トークンを取得するために、あなたの Github ログイン認証情報を要求するでしょう。 +> この制限にかかった場合、Composer は Github API アクセス・トークンを取得するために、あなたの Github ログイン認証情報を要求するでしょう。 > 高速な接続においては、Composer が対処できるよりも早い段階でこの制限にかかることもありますので、 > Yii のインストールの前に、このアクセス・トークンを構成することを推奨します。 > アクセス・トークンの構成の仕方については、[Github API トークンに関する Composer ドキュメント](https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens) @@ -52,26 +55,23 @@ Composer は `composer self-update` コマンドを実行してアップデー ### Yii をインストールする -Composer がインストールされたら、ウェブからアクセスできるフォルダで下記のコマンドを実行することによって Yii をインストールすることが出来ます。 +Composer がインストールされたら、ウェブ・アクセス可能なフォルダで下記のコマンドを実行することによって +Yii アプリケーション・テンプレートをインストールすることが出来ます。 ```bash -composer global require "fxp/composer-asset-plugin:~1.3.1" composer create-project --prefer-dist yiisoft/yii2-app-basic basic ``` -最初のコマンドは [composer アセット・プラグイン](https://github.com/francoispluchino/composer-asset-plugin/) をインストールします。 -これにより、Composer を通じて bower と npm の依存パッケージを管理することが出来るようになります。 -このコマンドは一度だけ実行すれば十分です。 -第二のコマンドは `basic` という名前のディレクトリに Yii の最新の安定版をインストールします。 +このコマンドが `basic` という名前のディレクトリに Yii アプリケーション/テンプレートの最新の安定版をインストールします。 必要なら別のディレクトリ名を選ぶことも出来ます。 -> Info: `composer create-project` コマンドが失敗するときは、composer asset plugin が正しくインストール出来ているかどうかを確認して下さい。 -> `composer global show` を実行することで確認することが出来ます。このコマンドの出力に `fxp/composer-asset-plugin` のエントリが含まれていなければなりません。. -> よくあるエラーについては、[Composer ドキュメントのトラブル・シューティングのセクション](https://getcomposer.org/doc/articles/troubleshooting.md) -> も参照して下さい。 -> エラーを修正した後は、`basic` ディレクトリの中で `composer update` を実行して、中断されたインストールを再開することが出来ます。 +> Info: `composer create-project` コマンドが失敗するときは、 +> よくあるエラーについて [Composer ドキュメントのトラブル・シューティングのセクション](https://getcomposer.org/doc/articles/troubleshooting.md) を参照して下さい。 +> エラーを修正した後は、`basic` ディレクトリの中で `composer update` を実行して、 +> 中断されたインストールを再開することが出来ます。 -> Tip: Yii の最新の開発バージョンをインストールしたい場合は、[stability option](https://getcomposer.org/doc/04-schema.md#minimum-stability) を追加した次のコマンドを代りに使うことが出来ます。 +> Tip: Yii の最新の開発バージョンをインストールしたい場合は、[stability option](https://getcomposer.org/doc/04-schema.md#minimum-stability) +> を追加した次のコマンドを代りに使うことが出来ます。 > > ```bash > composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic @@ -85,9 +85,9 @@ composer create-project --prefer-dist yiisoft/yii2-app-basic basic アーカイブ・ファイルから Yii をインストールするには、三つの手順を踏みます。 -1. [yiiframework.com](http://www.yiiframework.com/download/) からアーカイブ・ファイルをダウンロードする。 -2. ダウンロードしたファイルをウェブからアクセスできるフォルダーに展開する。 -3. `config/web.php` ファイルを編集して、`cookieValidationKey` という構成情報の項目に秘密キーを入力する +1. [yiiframework.com](http://www.yiiframework.com/download/) からアーカイブ・ファイルをダウンロードします。 +2. ダウンロードしたファイルをウェブ・アクセス可能なフォルダに展開します。 +3. `config/web.php` ファイルを編集して、`cookieValidationKey` という構成情報の項目に秘密キーを入力します (Composer を使って Yii をインストールするときは、これは自動的に実行されます)。 ```php @@ -105,17 +105,17 @@ composer create-project --prefer-dist yiisoft/yii2-app-basic basic しかし、他のインストール・オプションも利用可能です。 -* コアフレームワークだけをインストールし、アプリケーション全体を一から構築したい場合は、[アプリケーションを一から構築する](tutorial-start-from-scratch.md) +* コア・フレームワークだけをインストールし、アプリケーション全体を一から構築したい場合は、[アプリケーションを一から構築する](tutorial-start-from-scratch.md) で説明されている指示に従うことが出来ます。 -* もっと洗練された、チーム開発環境により適したアプリケーションから開始したい場合は、 [アドバンスト・プロジェクト・テンプレート](https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide-ja/README.md) をインストールすることを考慮することが出来ます。 +* もっと洗練された、チーム開発環境により適したアプリケーションから開始したい場合は、 + [アドバンスト・プロジェクト・テンプレート](https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide-ja/README.md) をインストールすることを考慮することが出来ます。 アセットをインストールする -------------------------- -Yii は、アセット (CSS および JavaScript) ライブラリのインストールについて -[Bower](http://bower.io/) および/または [NPM](https://www.npmjs.org/) のパッケージに依存しています。 -Yii はこれらのライブラリを取得するのに Composer を使って、PHP と CSS/JavaScript のパッケージバージョンを同時に解決できるようにしています。 +Yii は、アセット (CSS および JavaScript) ライブラリのインストールについて [Bower](http://bower.io/) および/または [NPM](https://www.npmjs.org/) のパッケージに依存しています。 +Yii はこれらのライブラリを取得するのに Composer を使って、PHP と CSS/JavaScript のパッケージ・バージョンを同時に解決できるようにしています。 このことは、[asset-packagist.org](https://asset-packagist.org) または [composer asset plugin](https://github.com/francoispluchino/composer-asset-plugin/) を使用することによって達成されます。 詳細は [アセットのドキュメント](structure-assets.md) を参照して下さい。 @@ -131,15 +131,14 @@ Composer によるアセットのインストールを抑止するためには }, ``` -> Note: Composer によるアセットのインストールをバイパスする場合は、アセットのインストールとバージョン衝突の解決について -> あなたが責任を持たなければなりません。 +> Note: Composer によるアセットのインストールをバイパスする場合は、アセットのインストールとバージョン衝突の解決についてあなたが責任を持たなければなりません。 > さまざまなエクステンションに由来するアセット・ファイル間で不整合が生じうることを覚悟して下さい。 インストールを検証する ---------------------- -インストール完了後、あなたのウェブ・サーバを構成してください (次の説を参照してください)。 +インストール完了後、あなたのウェブ・サーバを構成してください (次のセクションを参照してください)。 あるいは、プロジェクトの `web` ディレクトリで次のコマンドを実行して、 [PHP の内蔵ウェブ・サーバ](https://secure.php.net/manual/ja/features.commandline.webserver.php) を使ってください。 @@ -147,9 +146,8 @@ Composer によるアセットのインストールを抑止するためには php yii serve ``` -> Note: デフォルトでは、この HTTP サーバは 8080 ポートをリスンします。 -しかし、このポートがすでに使われていたり、複数のアプリケーションをこの方法で動かしたい場合は、どのポートを使うかを指定したいと思うでしょう。 -単に --port 引数を追加して下さい。 +> Note: デフォルトでは、この HTTP サーバは 8080 ポートをリスンします。しかし、このポートがすでに使われていたり、複数のアプリケーションをこの方法で動かしたい場合は、 + どのポートを使うかを指定したいと思うでしょう。単に --port 引数を追加して下さい。 ```bash php yii serve --port=8888 @@ -163,11 +161,10 @@ http://localhost:8080/ ![Yii のインストールが成功](images/start-app-installed.png) -ブラウザに上のような "おめでとう!" のページが表示されるはずです。 -もし表示されなかったら、PHP のインストールが Yii の必要条件を満たしているかどうか、チェックしてください。 +ブラウザに上のような "おめでとう!" のページが表示されるはずです。もし表示されなかったら、PHP のインストールが Yii の必要条件を満たしているかどうか、チェックしてください。 最低限の必要条件を満たしているかどうかは、次の方法のどちらかによってチェックすることが出来ます。 -* `requirements.php` を `/web/requirements.php` としてコピーし、ブラウザを使って URL `http://localhost/requirements.php` にアクセスする。 +* `/requirements.php` を `/web/requirements.php` としてコピーし、ブラウザを使って URL `http://localhost/requirements.php` にアクセスする。 * 次のコマンドを実行する。 ```bash @@ -177,29 +174,37 @@ http://localhost:8080/ Yii の最低必要条件を満たすように PHP のインストールを構成しなければなりません。 最も重要なことは、PHP 5.4 以上でなければならないということです。最新の PHP 7 なら理想的です。 -また、アプリケーションがデータベースを必要とする場合は、[PDO PHP 拡張](http://www.php.net/manual/ja/pdo.installation.php) および対応するデータベースドライバ (MySQL データベースのための `pdo_mysql` など) をインストールしなければなりません。 +また、アプリケーションがデータベースを必要とする場合は、[PDO PHP 拡張](http://www.php.net/manual/ja/pdo.installation.php) および対応するデータベース・ドライバ (MySQL データベースのための `pdo_mysql` など) をインストールしなければなりません。 ウェブ・サーバを構成する ------------------------ -> Info: もし Yii の試運転をしているだけで、本番サーバに配備する意図がないのであれば、当面、この項は飛ばしても構いません。 +> Info: もし Yii の試運転をしているだけで、本番サーバに配備する意図がないのであれば、 + 当面、この項は飛ばしても構いません。 -上記の説明に従ってインストールされたアプリケーションは、[Apache HTTP サーバ](http://httpd.apache.org/) と [Nginx HTTP サーバ](http://nginx.org/) のどちらでも、また、Windows、Mac OS X、Linux のどれでも、PHP 5.4 以上を走らせている環境であれば、そのままの状態で動作するはずです。 +上記の説明に従ってインストールされたアプリケーションは、[Apache HTTP サーバ](http://httpd.apache.org/) +と [Nginx HTTP サーバ](http://nginx.org/) のどちらでも、また、Windows、Mac OS X、Linux のどれでも、 +PHP 5.4 以上を走らせている環境であれば、そのままの状態で動作するはずです。 Yii 2.0 は、また、facebook の [HHVM](http://hhvm.com/) とも互換性があります。 ただし HHVM がネイティブの PHP とは異なる振舞いをする特殊なケースもいくつかありますので、HHVM を使うときはいくらか余分に注意を払う必要があります。 -本番用のサーバでは、`http://www.example.com/basic/web/index.php` の代りに `http://www.example.com/index.php` という URL でアプリケーションにアクセス出来るようにウェブ・サーバを設定したいでしょう。 -そういう設定をするためには、ウェブ・サーバのドキュメントルートを `basic/web` フォルダに向けることが必要になります。 +本番用のサーバでは、`http://www.example.com/basic/web/index.php` の代りに `http://www.example.com/index.php` という +URL でアプリケーションにアクセス出来るようにウェブ・サーバを設定したいでしょう。 +そういう設定をするためには、ウェブ・サーバのドキュメント・ルートを `basic/web` フォルダに向けることが必要になります。 また、[ルーティングと URL 生成](runtime-routing.md) のセクションで述べられているように、URL から `index.php` を隠したいとも思うでしょう。 -このセクションでは、これらの目的を達するために Apache または Nginx サーバをどのように設定すれば良いかを学びます。 +この項では、これらの目的を達するために Apache または Nginx サーバをどのように設定すれば良いかを学びます。 -> Info: `basic/web` をドキュメント・ルートに設定することは、`basic/web` の兄弟ディレクトリに保存されたプライベートなアプリケーション・コードや公開できないデータ・ファイルにエンド・ユーザがアクセスすることを防止することにもなります。 +> Info: `basic/web` をドキュメント・ルートに設定することは、`basic/web` の兄弟ディレクトリに保存されたプライベートなアプリケーション・コードや +公開できないデータ・ファイルにエンド・ユーザがアクセスすることを防止することにもなります。 `basic/web` 以外のフォルダに対するアクセスを拒否することはセキュリティ強化の一つです。 -> Info: あなたがウェブ・サーバの設定を修正する権限を持たない共用ホスティング環境でアプリケーションが走る場合であっても、セキュリティ強化のためにアプリケーションの構造を調整することがまだ出来ます。 +> Info: あなたがウェブ・サーバの設定を修正する権限を持たない共用ホスティング環境でアプリケーションが走る場合であっても、 +セキュリティ強化のためにアプリケーションの構造を調整することがまだ出来ます。 詳細については、[共有ホスティング環境](tutorial-shared-hosting.md) のセクションを参照してください。 +> Info: あなたのアプリケーションをリバース・プロキシの背後で動かそうとする場合は、 +> リクエスト・コンポーネントの [信頼できるプロキシとヘッダ](runtime-requests.md#trusted-proxies) を構成する必要があるかもしれません。 ### 推奨される Apache の構成 @@ -207,7 +212,7 @@ Yii 2.0 は、また、facebook の [HHVM](http://hhvm.com/) とも互換性が `path/to/basic/web` の部分を `basic/web` の実際のパスに置き換えなければならないことに注意してください。 ```apache -# ドキュメントルートを "basic/web" に設定 +# ドキュメント・ルートを "basic/web" に設定 DocumentRoot "path/to/basic/web" @@ -219,6 +224,9 @@ DocumentRoot "path/to/basic/web" # そうでなければ、リクエストを index.php に送付する RewriteRule . index.php + # UrlManager の $showScriptName が false の場合は、スクリプト名で URL にアクセスすることを許さない + RewriteRule ^index.php/ - [L,R=404] + # ... 他の設定 ... ``` @@ -275,6 +283,8 @@ server { } ``` -この構成を使う場合は、多数の不要な `stat()` システム・コールを避けるために、`php.ini` ファイルで `cgi.fix_pathinfo=0` を同時に設定しておくべきです。 +この構成を使う場合は、多数の不要な `stat()` システム・コールを避けるために、 +`php.ini` ファイルで `cgi.fix_pathinfo=0` を同時に設定しておくべきです。 -また、HTTPS サーバを走らせている場合には、安全な接続であることを Yii が正しく検知できるように、`fastcgi_param HTTPS on;` を追加しなければならないことにも注意を払ってください。 +また、HTTPS サーバを走らせている場合には、安全な接続であることを Yii が正しく検知できるように、 +`fastcgi_param HTTPS on;` を追加しなければならないことにも注意を払ってください。 diff --git a/docs/guide-ja/start-looking-ahead.md b/docs/guide-ja/start-looking-ahead.md index 2a2d619..fb893a5 100644 --- a/docs/guide-ja/start-looking-ahead.md +++ b/docs/guide-ja/start-looking-ahead.md @@ -3,7 +3,7 @@ 「はじめよう」の章全体を読み通したなら、いまやあなたは、完全な Yii のアプリケーションを作成したことがある、ということになります。 その過程で、あなたは必要とされることが多いいくつかの機能、例えば、HTML フォームを通じてユーザからデータを取得することや、データベースからデータを取得すること、また、ページ付けをしてデータを表示することなどを実装する方法を学びました。 -また、[Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide-ja/README.md) を使ってコードを自動的に生成する方法も学びました。 +また、[Gii](https://www.yiiframework.com/extension/yiisoft/yii2-gii/doc/guide) を使ってコードを自動的に生成する方法も学びました。 Gii をコード生成に使うと、ウェブ開発のプロセスの大部分が、いくつかのフォームに入力していくだけの簡単な仕事になります。 このセクションでは、Yii フレームワークを使うときの生産性を更に高めるために利用できるリソースについてまとめます。 @@ -11,7 +11,7 @@ Gii をコード生成に使うと、ウェブ開発のプロセスの大部分 * ドキュメント - [決定版ガイド](http://www.yiiframework.com/doc-2.0/guide-README.html): 名前が示すように、このガイドは Yii がどのように動作すべきものかを正確に記述し、Yii を使用するについての全般的な手引きを提供するものです。 - これは唯一の最も重要な Yii のチュートリアルであり、Yii のコードを少しでも書く前にあなたはこれを読まなければなりません。 + これは唯一の最も重要な Yii のチュートリアルであり、Yii のコードを少しでも書く前にあなたが読まなければならないものです。 - [クラス・リファレンス](http://www.yiiframework.com/doc-2.0/index.html): これは Yii によって提供される全てのクラスの使用法を記述しています。 主として、コードを書いている時に、特定のクラス、メソッド、プロパティについて理解したい場合に読まれるべきものです。 diff --git a/docs/guide-ja/start-prerequisites.md b/docs/guide-ja/start-prerequisites.md index c31cd7c..4a37d68 100644 --- a/docs/guide-ja/start-prerequisites.md +++ b/docs/guide-ja/start-prerequisites.md @@ -5,19 +5,19 @@ Yii の学習曲線は他の PHP フレームワークほど急峻ではあり ## PHP Yii は PHP フレームワークですから、必ず [言語リファレンスを読んで理解する](http://php.net/manual/ja/langref.php) ようにして下さい。 -Yii を使って開発するときはオブジェクト指向でコードを書くことになりますから、必ず、 -[クラスとオブジェクト](https://secure.php.net/manual/ja/language.oop5.basic.php) および [名前空間](https://secure.php.net/manual/ja/language.namespaces.php) には慣れ親しんでおいて下さい。 +Yii を使って開発するときはオブジェクト指向の流儀でコードを書くことになりますから、必ず、[クラスとオブジェクト](https://secure.php.net/manual/ja/language.oop5.basic.php) および [名前空間](https://secure.php.net/manual/ja/language.namespaces.php) には慣れ親しんでおいて下さい。 ## オブジェクト指向プログラミング オブジェクト指向プログラミングの基礎的な理解が必要です。これに慣れていない場合は、利用できるチュートリアルが沢山ありますので、その中の一つをチェックして下さい。 例えば、[tuts+ の中の一つ](https://code.tutsplus.com/tutorials/object-oriented-php-for-beginners--net-12762) など。 -あなたのアプリケーションが複雑であればあるほど、その複雑性を管理するために、より高度な OOP 概念を学ぶ必要があることに留意して下さい。 +あなたのアプリケーションが複雑であればあるほど、その複雑性をうまく管理するために、 +より高度な OOP 概念を学ぶ必要があることに留意して下さい。 -## コマンドラインと Composer +## コマンド・ラインと Composer + +Yii は業界標準の PHP パッケージ管理ソフトである [Composer](https://getcomposer.org/) を広範囲に使用していますので、必ずその [ガイド](https://getcomposer.org/doc/01-basic-usage.md) を読んで理解して下さい。 +あなたがコマンド・ラインの使用に慣れていないのであれば、今こそ使い始めてみるべき時です。 +いったん基礎さえ学習してしまえば、二度とコマンド・ラインなしで仕事をしようとは思わなくなりますよ。 -Yii は業界標準の PHP パッケージ管理ソフトである [Composer](https://getcomposer.org/) を広範囲に使用していますので、 -必ずその [ガイド](https://getcomposer.org/doc/01-basic-usage.md) を読んで理解して下さい。 -あなたがコマンドラインの使用に慣れていないのであれば、今こそ使い始めてみるべき時です。 -いったん基礎を学習すれば、二度とコマンドラインなしで仕事をしようとは思わなくなりますよ。 diff --git a/docs/guide-ja/start-workflow.md b/docs/guide-ja/start-workflow.md index 3d49c99..5a0a612 100644 --- a/docs/guide-ja/start-workflow.md +++ b/docs/guide-ja/start-workflow.md @@ -3,38 +3,40 @@ Yii のインストールが終ると、実際に動く Yii のアプリケーションにアクセスすることが出来ます。 その URL は、`http://hostname/basic/web/index.php` あるいは `http://hostname/index.php` など、設定によって異なります。 -このセクションでは、アプリケーションに組み込み済みの機能を紹介し、コードがどのように編成されているか、そして、一般にアプリケーションがリクエストをどのように処理するかを説明します。 +このセクションでは、アプリケーションに組み込み済みの機能を紹介し、コードがどのように編成されているか、 +そして、一般にアプリケーションがリクエストをどのように処理するかを説明します。 -> Info: 話を簡単にするために、この「始めよう」のチュートリアルを通じて、`basic/web` をウェブ・サーバのドキュメント・ルートとして設定したと仮定します。 +> Info: 話を簡単にするために、この「始めよう」のチュートリアルを通じて、`basic/web` + をウェブ・サーバのドキュメント・ルートとして設定したと仮定します。 そして、アプリケーションにアクセスするための URL は `http://hostname/index.php` またはそれに似たものになるように設定したと仮定します。 必要に応じて、説明の中の URL を読み替えてください。 - フレームワークそのものとは異なり、プロジェクト・テンプレートはインストール後は完全にあなたのものであることに注意してください。 必要に応じてコードを追加したり削除したり、完全に書き換えたりするのはあなたの自由です。 + 機能 ---- -インストールされた基本的なアプリケーションは四つのページを持っています。 +インストールされたベーシック・アプリケーションは四つのページを持っています。 * ホームページ: `http://hostname/index.php` の URL にアクセスすると表示されます。 * 「について」のページ。 * 「コンタクト」のページ: エンド・ユーザがメールであなたに連絡を取ることが出来るコンタクト・フォームが表示されます。 * 「ログイン」ページ: エンド・ユーザを認証するためのログイン・フォームが表示されます。 - "admin/admin" でログインしてみてください。 - 「ログイン」のメイン・メニュー項目が「ログアウト」に変ることに気付くでしょう。 + "admin/admin" でログインしてみてください。「ログイン」のメイン・メニュー項目が「ログアウト」に変ることに気付くでしょう。 これらのページは共通のヘッダとフッタを持っています。 ヘッダには、異なるページ間を行き来することを可能にするメイン・メニュー・バーがあります。 ブラウザのウィンドウの下部にツールバーがあることにも気がつくはずです。 -これは Yii によって提供される便利な [デバッグ・ツール・バー](https://github.com/yiisoft/yii2-debug/blob/master/docs/guide-ja/README.md) であり、たくさんのデバッグ情報、例えば、ログ・メッセージ、レスポンスのステータス、実行されたデータベース・クエリなどを記録して表示するものです。 +これは Yii によって提供される便利な [デバッグ・ツール](https://github.com/yiisoft/yii2-debug/blob/master/docs/guide-ja/README.md) であり、たくさんのデバッグ情報、例えば、ログ・メッセージ、レスポンスのステータス、実行されたデータベース・クエリなどを記録して表示するものです。 ウェブ・アプリケーションに加えて、`yii` というコンソール・スクリプトがアプリケーションのベース・ディレクトリにあります。 このスクリプトは、バックグラウンドのタスクまたはメンテナンスのタスクを実行するために使用することが出来ます。 これについては、[コンソール・アプリケーションのセクション](tutorial-console.md) で説明されています。 + アプリケーションの構造 ---------------------- @@ -52,7 +54,7 @@ basic/ アプリケーションのベース・パス runtime/ 実行時に Yii によって生成されるファイル (ログやキャッシュなど) を格納 vendor/ インストールされた Composer パッケージ (Yii フレームワークそのものを含む) を格納 views/ ビュー・ファイルを格納 - web/ アプリケーションのウェブ・ルート。ウェブからアクセス可能なファイルを格納 + web/ アプリケーションのウェブ・ルート。ウェブ・アクセス可能なファイルを格納 assets/ Yii によって発行されるアセット・ファイル (javascript と CSS) を格納 index.php アプリケーションのエントリ・スクリプト (ブートストラップ・スクリプト) yii Yii コンソール・コマンド実行スクリプト @@ -61,7 +63,8 @@ basic/ アプリケーションのベース・パス 一般に、アプリケーションのファイルは二種類に分けることが出来ます。すなわち、`basic/web` の下にあるファイルとその他のディレクトリの下にあるファイルです。 前者は HTTP で (すなわちブラウザで) 直接にアクセスすることが出来ますが、後者は直接のアクセスは出来ませんし、許可すべきでもありません。 -Yii は [モデル・ビュー・コントローラ (MVC)](http://wikipedia.org/wiki/Model-view-controller) アーキテクチャ・パターンを実装していますが、それが上記のディレクトリ構成にも反映されています。 +Yii は [モデル・ビュー・コントローラ (MVC)](http://wikipedia.org/wiki/Model-view-controller) アーキテクチャ・パターンを実装していますが、 +それが上記のディレクトリ構成にも反映されています。 `models` ディレクトリが全ての [モデル・クラス](structure-models.md) を格納し、`views` ディレクトリが全ての [ビュー・スクリプト](structure-views.md) を格納し、 `controllers` ディレクトリが全ての [コントローラ・クラス](structure-controllers.md) を格納しています。 @@ -70,22 +73,24 @@ Yii は [モデル・ビュー・コントローラ (MVC)](http://wikipedia.org/ ![アプリケーションの静的な構造](images/application-structure.png) 各アプリケーションは一つのエントリ・スクリプト `web/index.php` を持ちます。 -これはアプリケーション中で唯一ウェブからアクセス可能な PHP スクリプトです。 +これはアプリケーション中で唯一ウェブ・アクセス可能な PHP スクリプトです。 エントリ・スクリプトは入力されたリクエストを受け取って、[アプリケーション](structure-applications.md) のインスタンスを作成します。 [アプリケーション](structure-applications.md) は [コンポーネント](concept-components.md) の助力を得てリクエストを解決し、リクエストを MVC に送付します。 [ウィジェット](structure-widgets.md) は、複雑で動的なユーザ・インタフェイス要素を構築するために、[ビュー](structure-views.md) の中で使われます。 -リクエストのライフ・サイクル ----------------------------- +リクエストのライフサイクル +-------------------------- 次の図は、アプリケーションがどのようにリクエストを処理するかを示すものです。 -![リクエストのライフ・サイクル](images/request-lifecycle.png) +![リクエストのライフサイクル](images/request-lifecycle.png) 1. ユーザが [エントリ・スクリプト](structure-entry-scripts.md) `web/index.php` に対してリクエストを出します。 -2. エントリ・スクリプトはアプリケーションの [構成情報](concept-configurations.md) を読み出して、リクエストを処理する [アプリケーション](structure-applications.md) のインスタンスを作成します。 -3. アプリケーションは、[リクエスト](runtime-requests.md) アプリケーション・コンポーネントの助力を得て、リクエストされた [ルート](runtime-routing.md) を解決します。 +2. エントリ・スクリプトはアプリケーションの [構成情報](concept-configurations.md) を読み出して、 + リクエストを処理する [アプリケーション](structure-applications.md) のインスタンスを作成します。 +3. アプリケーションは、[リクエスト](runtime-requests.md) アプリケーション・コンポーネントの助力を得て、 + リクエストされた [ルート](runtime-routing.md) を解決します。 4. アプリケーションがリクエストを処理する [コントローラ](structure-controllers.md) のインスタンスを作成します。 5. コントローラが [アクション](structure-controllers.md) のインスタンスを作成し、アクションのためのフィルタを実行します。 6. 一つでもフィルタが失敗したときは、アクションはキャンセルされます。 diff --git a/docs/guide-ja/structure-application-components.md b/docs/guide-ja/structure-application-components.md index 02e05fc..a75554a 100644 --- a/docs/guide-ja/structure-application-components.md +++ b/docs/guide-ja/structure-application-components.md @@ -2,8 +2,9 @@ ================================ アプリケーションは [サービス・ロケータ](concept-service-locator.md) です。 -アプリケーションは、リクエストを処理するためのいろいろなサービスを提供する一連のオブジェクト、いわゆる *アプリケーション・コンポーネント* をホストします。 -例えば、`urlManager` がウェブ・リクエストを適切なコントローラにルーティングする役割を負い、`db` コンポーネントが DB 関連のサービスを提供する、等々です。 +アプリケーションは、リクエストを処理するためのいろいろなサービスを提供する一組の *アプリケーション・コンポーネント* と呼ばれるものをホストします。 +例えば、`urlManager` がウェブ・リクエストを適切なコントローラにルーティングする役割を負い、 +`db` コンポーネントが DB 関連のサービスを提供する、等々です。 全てのアプリケーション・コンポーネントは、それぞれ、同一のアプリケーション内で他のアプリケーション・コンポーネントから区別できるように、ユニークな ID を持ちます。 アプリケーション・コンポーネントには、次の式によってアクセス出来ます。 @@ -57,8 +58,7 @@ けれども、場合によっては、明示的にアクセスされないときでも、リクエストごとにアプリケーション・コンポーネントのインスタンスを作成したいことがあります。 そうするために、アプリケーションの [[yii\base\Application::bootstrap|bootstrap]] プロパティのリストにそのコンポーネントの ID を挙げることが出来ます。 -また、特別なコンポーネントをブートストラップするためにクロージャを用いることも出来ます。 -インスタンス化されたコンポーネントを返すことは要求されません。 +また、カスタマイズしたコンポーネントをブートストラップするためにクロージャを用いることも出来ます。インスタンス化されたコンポーネントを返すことは要求されません。 単に [[yii\base\Application]] のインスタンス化の後にコードを走らせるだけのためにクロージャを使うことも出来ます。 例えば、次のアプリケーション構成情報は、`log` コンポーネントが常にロードされることを保証するものです。 @@ -87,9 +87,10 @@ ## コア・アプリケーション・コンポーネント Yii は固定の ID とデフォルトの構成情報を持つ一連の *コア*・アプリケーション・コンポーネントを定義しています。 -例えば、[[yii\web\Application::request|request]] コンポーネントは、ユーザ・リクエストに関する情報を収集して、それを [ルート](runtime-routing.md) として解決するために使用されます。 +例えば、[[yii\web\Application::request|request]] コンポーネントは、ユーザ・リクエストに関する情報を収集して、 +それを [ルート](runtime-routing.md) として解決するために使用されます。 また、[[yii\base\Application::db|db]] コンポーネントは、それを通じてデータ・ベースクエリを実行できるデータベース接続を表現します。 -Yii のアプリケーションがユーザリクエストを処理出来るのは、まさにこれらのコア・アプリケーション・コンポーネントの助けがあってこそです。 +Yii のアプリケーションがユーザ・リクエストを処理出来るのは、まさにこれらのコア・アプリケーション・コンポーネントの助けがあってこそです。 下記が事前に定義されたコア・アプリケーション・コンポーネントです。 通常のアプリケーション・コンポーネントに対するのと同様に、これらを構成し、カスタマイズすることが出来ます。 @@ -98,8 +99,9 @@ Yii のアプリケーションがユーザリクエストを処理出来るの * [[yii\web\AssetManager|assetManager]]: アセット・バンドルとアセットの発行を管理します。 詳細は [アセット](structure-assets.md) のセクションを参照してください。 * [[yii\db\Connection|db]]: データベース接続を表します。これを通じて、DB クエリを実行することが出来ます。 - このコンポーネントを構成するときは、コンポーネントのクラスはもちろん、[[yii\db\Connection::dsn]] のような必須のコンポーネント・プロパティを指定しなければならないことに注意してください。 - 詳細は [データアクセス・オブジェクト](db-dao.md) のセクションを参照してください。 + このコンポーネントを構成するときは、コンポーネントのクラスはもちろん、[[yii\db\Connection::dsn]] + のような必須のコンポーネント・プロパティを指定しなければならないことに注意してください。 + 詳細は [データベース・アクセス・オブジェクト](db-dao.md) のセクションを参照してください。 * [[yii\base\Application::errorHandler|errorHandler]]: PHP のエラーと例外を処理します。 詳細は [エラー処理](runtime-handling-errors.md) のセクションを参照してください。 * [[yii\i18n\Formatter|formatter]]: エンド・ユーザに表示されるデータに書式を設定します。 diff --git a/docs/guide-ja/structure-applications.md b/docs/guide-ja/structure-applications.md index 03f9b55..aa65426 100644 --- a/docs/guide-ja/structure-applications.md +++ b/docs/guide-ja/structure-applications.md @@ -1,19 +1,22 @@ アプリケーション ================ -アプリケーションは Yii アプリケーション・システム全体の構造とライフ・サイクルを統制するオブジェクトです。 +アプリケーションは Yii アプリケーション・システム全体の構造とライフサイクルを統制するオブジェクトです。 全ての Yii アプリケーション・システムは、それぞれ、単一のアプリケーション・オブジェクトを持ちます。 アプリケーション・オブジェクトは、[エントリ・スクリプト](structure-entry-scripts.md) において作成され、`\Yii::$app` という式でグローバルにアクセスすることが出来るオブジェクトです。 -> Info: ガイドの中で「アプリケーション」という言葉は、文脈に応じて、アプリケーション・オブジェクトを意味したり、アプリケーション・システムを意味したりします。 +> Info: ガイドの中で「アプリケーション」という言葉は、文脈に応じて、アプリケーション・オブジェクトを意味したり、 + アプリケーション・システムを意味したりします。 -二種類のアプリケーション、すなわち、[[yii\web\Application|ウェブ・アプリケーション]] と [[yii\console\Application|コンソール・アプリケーション]] があります。 +二種類のアプリケーション、すなわち、[[yii\web\Application|ウェブ・アプリケーション]] と +[[yii\console\Application|コンソール・アプリケーション]] があります。 名前が示すように、前者は主にウェブのリクエストを処理し、後者はコンソール・コマンドのリクエストを処理します。 ## アプリケーションの構成情報 -[エントリ・スクリプト](structure-entry-scripts.md) は、アプリケーションを作成するときに、下記のように、[構成情報](concept-configurations.md) を読み込んで、それをアプリケーションに適用します。 +[エントリ・スクリプト](structure-entry-scripts.md) は、アプリケーションを作成するときに、下記のように、 +[構成情報](concept-configurations.md) を読み込んで、それをアプリケーションに適用します。 ```php require __DIR__ . '/../vendor/autoload.php'; @@ -26,8 +29,10 @@ $config = require __DIR__ . '/../config/web.php'; (new yii\web\Application($config))->run(); ``` -通常の [構成情報](concept-configurations.md) と同じように、アプリケーションの構成情報は、アプリケーション・オブジェクトのプロパティをどのように初期化するかを指定するものです。 -アプリケーションの構成情報は、たいていは非常に複雑なものですから、通常は、上記の例の `web.php` ファイルのように、[構成情報ファイル](concept-configurations.md#configuration-files) に保管されます。 +通常の [構成情報](concept-configurations.md) と同じように、アプリケーションの構成情報は、 +アプリケーション・オブジェクトのプロパティをどのように初期化するかを指定するものです。 +アプリケーションの構成情報は、たいていは非常に複雑なものですから、通常は、上記の例の `web.php` ファイルのように、 +[構成情報ファイル](concept-configurations.md#configuration-files) に保管されます。 ## アプリケーションのプロパティ @@ -55,22 +60,22 @@ $config = require __DIR__ . '/../config/web.php'; [[yii\base\Application::basePath|basePath]] プロパティは、アプリケーションのルート・ディレクトリを指定するものです。 これは、アプリケーション・システムの全ての保護されたソース・コードを収容するディレクトリです。 -通常、このディレクトリの下に、MVC パターンに対応するソース・コードを収容した `models`、`views`、`controllers` などのサブ・ディレクトリがあります。 +通常、このディレクトリの下に、MVC パターンに対応するソース・コードを収容した `models`、`views`、`controllers` +などのサブ・ディレクトリがあります。 [[yii\base\Application::basePath|basePath]] プロパティの構成には、ディレクトリ・パスを使っても、[パス・エイリアス](concept-aliases.md) を使っても構いません。 どちらの形式においても、対応するディレクトリが存在しなければなりません。 -さもなくば、例外が投げられます。 -パスは `realpath()` 関数を呼び出して正規化されます。 +さもなくば、例外が投げられます。パスは `realpath()` 関数を呼び出して正規化されます。 [[yii\base\Application::basePath|basePath]] プロパティは、しばしば、他の重要なパス (例えば、runtime のパス) を派生させるために使われます。 このため、`basePath` を示す `@app` というパス・エイリアスが、あらかじめ定義されています。 -その結果、派生的なパスはこのエイリアスを使って形成することが出来ます -(例えば、runtime ディレクトリを示す `@app/runtime` など)。 +その結果、派生的なパスはこのエイリアスを使って形成することが出来ます(例えば、runtime ディレクトリを示す `@app/runtime` など)。 ### 重要なプロパティ -この項で説明するプロパティは、アプリケーションごとに異なってくるものであるため、たいてい、構成する必要が生じます。 +この項で説明するプロパティは、アプリケーションごとに異なるものであるため、 +構成する必要がよく生じるものです。 #### [[yii\base\Application::aliases|aliases]] @@ -88,14 +93,16 @@ $config = require __DIR__ . '/../config/web.php'; ] ``` -このプロパティが提供されているのは、[[Yii::setAlias()]] メソッドを呼び出す代りに、アプリケーションの構成情報を使ってエイリアスを定義することが出来るようにするためです。 +このプロパティが提供されているのは、[[Yii::setAlias()]] メソッドを呼び出す代りに、 +アプリケーションの構成情報を使ってエイリアスを定義することが出来るようにするためです。 #### [[yii\base\Application::bootstrap|bootstrap]] これは非常に有用なプロパティです。 これによって、アプリケーションの [[yii\base\Application::bootstrap()|ブートストラップの過程]] において走らせるべきコンポーネントを配列として指定することが出来ます。 -例えば、ある [モジュール](structure-modules.md) に [URL 規則](runtime-routing.md) をカスタマイズさせたいときに、モジュールの ID をこのプロパティの要素として挙げることが出来ます。 +例えば、ある [モジュール](structure-modules.md) に [URL 規則](runtime-routing.md) をカスタマイズさせたいときに、 +モジュールの ID をこのプロパティの要素として挙げることが出来ます。 このプロパティにリストする各コンポーネントは、以下の形式のいずれかによって指定することが出来ます。 @@ -130,8 +137,10 @@ $config = require __DIR__ . '/../config/web.php'; ] ``` -> Info: モジュール ID と同じ ID のアプリケーション・コンポーネントがある場合は、ブートストラップの過程ではアプリケーション・コンポーネントが使われます。 -> 代りにモジュールを使いたいときは、次のように、無名関数を使って指定することが出来ます。 +> Info: モジュール ID と同じ ID のアプリケーション・コンポーネントがある場合は、 +> ブートストラップの過程ではアプリケーション・コンポーネントが使われます。 +> 代りにモジュールを使いたいときは、次のように、無名関数を使って指定することが出来ます。 +> > ```php > [ > function () { @@ -140,11 +149,14 @@ $config = require __DIR__ . '/../config/web.php'; > ] > ``` + ブートストラップの過程で、各コンポーネントのインスタンスが作成されます。 -そして、コンポーネント・クラスが [[yii\base\BootstrapInterface]] を実装している場合は、その [[yii\base\BootstrapInterface::bootstrap()|bootstrap()]] メソッドも呼び出されます。 +そして、コンポーネント・クラスが [[yii\base\BootstrapInterface]] を実装している場合は、 +その [[yii\base\BootstrapInterface::bootstrap()|bootstrap()]] メソッドも呼び出されます。 もう一つの実用的な例が [ベーシック・プロジェクト・テンプレート](start-installation.md) のアプリケーションの構成情報の中にあります。 -そこでは、アプリケーションが開発環境で走るときには `debug` モジュールと `gii` モジュールがブートストラップ・コンポーネントとして構成されています。 +そこでは、アプリケーションが開発環境で走るときには `debug` モジュールと `gii` モジュールが +ブートストラップ・コンポーネントとして構成されています。 ```php if (YII_ENV_DEV) { @@ -158,8 +170,7 @@ if (YII_ENV_DEV) { ``` > Note: あまり多くのコンポーネントを `bootstrap` に置くと、アプリケーションのパフォーマンスを劣化させます。 - なぜなら、リクエストごとに同じ一連のコンポーネントを走らせなければならないからです。 - ですから、ブートストラップ・コンポーネントは賢く使ってください。 + なぜなら、リクエストごとに同じ一連のコンポーネントを走らせなければならないからです。ですから、ブートストラップ・コンポーネントは賢く使ってください。 #### [[yii\web\Application::catchAll|catchAll]] @@ -169,8 +180,7 @@ if (YII_ENV_DEV) { これは主としてアプリケーションがメンテナンス・モードにあって、入ってくる全てのリクエストを単一のアクションで処理する必要があるときに使われます。 構成情報は配列の形を取り、最初の要素はアクションのルートを指定します。 -そして、配列の残りの要素 (キー・値のペア) は、アクションに渡されるパラメータを指定します。 -例えば、 +そして、配列の残りの要素 (キー・値のペア) は、アクションに渡されるパラメータを指定します。例えば、 ```php [ @@ -184,12 +194,10 @@ if (YII_ENV_DEV) { > Info: このプロパティを有効にすると、開発環境でデバッグ・パネルが動作しなくなります。 - #### [[yii\base\Application::components|components]] これこそが、唯一の最も重要なプロパティです。 -これによって、[アプリケーション・コンポーネント](structure-application-components.md) と呼ばれる一連の名前付きのコンポーネントを登録して、それらを他の場所で使うことが出来るようになります。 -例えば、 +これによって、[アプリケーション・コンポーネント](structure-application-components.md) と呼ばれる一連の名前付きのコンポーネントを登録して、それらを他の場所で使うことが出来るようになります。例えば、 ```php [ @@ -234,7 +242,8 @@ if (YII_ENV_DEV) { ] ``` -このプロパティの配列のキーはコントローラ ID を表し、配列の値は対応するコントローラ・クラスの名前または [構成情報](concept-configurations.md) を表します。 +このプロパティの配列のキーはコントローラ ID を表し、配列の値は対応するコントローラ・クラスの名前または +[構成情報](concept-configurations.md) を表します。 #### [[yii\base\Application::controllerNamespace|controllerNamespace]] @@ -244,12 +253,15 @@ if (YII_ENV_DEV) { コントローラ ID が `post` である場合、規約によって対応するコントローラの (名前空間を略した) クラス名は `PostController` となり、完全修飾クラス名は `app\controllers\PostController` となります。 コントローラ・クラスは、この名前空間に対応するディレクトリのサブ・ディレクトリに配置されても構いません。 -例えば、コントローラ ID として `admin/post` を仮定すると、対応するコントローラの完全修飾クラス名は `app\controllers\admin\PostController` となります。 +例えば、コントローラ ID として `admin/post` を仮定すると、対応するコントローラの完全修飾クラス名は +`app\controllers\admin\PostController` となります。 -重要なことは、完全修飾されたコントローラ・クラスが [オートロード可能](concept-autoloading.md) でなければならず、コントローラ・クラスの実際の名前空間がこのプロパティと合致していなければならない、ということです。 +重要なことは、完全修飾されたコントローラ・クラスが [オートロード可能](concept-autoloading.md) でなければならず、 +コントローラ・クラスの実際の名前空間がこのプロパティと合致していなければならない、ということです。 そうでないと、アプリケーションにアクセスしたときに "ページがみつかりません" というエラーを受け取ることになります。 -上で説明された規約を破りたい場合は、[controllerMap](#controllerMap) プロパティを構成することが出来ます。 +上で説明された規約を破りたい場合は、 +[controllerMap](#controllerMap) プロパティを構成することが出来ます。 #### [[yii\base\Application::language|language]] @@ -259,7 +271,9 @@ if (YII_ENV_DEV) { アプリケーションが多言語をサポートする必要があるときは、このプロパティを構成しなければなりません。 このプロパティの値が、メッセージの翻訳、日付の書式、数字の書式などを含む [国際化](tutorial-i18n.md) のさまざまな側面を決定します。 -例えば、[[yii\jui\DatePicker]] ウィジェットは、どの言語でカレンダーを表示すべきか、そして日付をどのように書式設定すべきかを、デフォルトでは、このプロパティを使用して決定します。 +例えば、[[yii\jui\DatePicker]] ウィジェットは、どの言語でカレンダーを表示すべきか、 +そして日付をどのように書式設定すべきかを、デフォルトでは、 +このプロパティを使用して決定します。 言語を指定するのには、[IETF 言語タグ](http://ja.wikipedia.org/wiki/IETF%E8%A8%80%E8%AA%9E%E3%82%BF%E3%82%B0) に従うことが推奨されます。 例えば、`en` は英語を意味し、`en-US` はアメリカ合衆国の英語を意味します。 @@ -295,7 +309,8 @@ if (YII_ENV_DEV) { #### [[yii\base\Application::name|name]] このプロパティは、エンド・ユーザに対して表示されるアプリケーション名を指定するものです。 -[[yii\base\Application::id|id]] プロパティがユニークな値を取らなければならないのとは違って、このプロパティの値は主として表示目的であり、ユニークである必要はありません。 +[[yii\base\Application::id|id]] プロパティがユニークな値を取らなければならないのとは違って、 +このプロパティの値は主として表示目的であり、ユニークである必要はありません。 コードのどこにも使わないのであれば、このプロパティは必ずしも構成する必要はありません。 @@ -303,7 +318,8 @@ if (YII_ENV_DEV) { #### [[yii\base\Application::params|params]] このプロパティは、グローバルにアクセス可能なアプリケーション・パラメータの配列を指定するものです。 -コードの中のいたる処でハードコードされた数値や文字列を使う代りに、それらをアプリケーション・パラメータとして一ヶ所で定義し、必要な場所ではそのパラメータを使うというのが良いプラクティスです。 +コードの中のいたる処でハードコードされた数値や文字列を使う代りに、それらをアプリケーション・パラメータとして一ヶ所で定義し、 +必要な場所ではそのパラメータを使うというのが良いプラクティスです。 例えば、次のように、サムネール画像のサイズをパラメータとして定義することが出来ます。 ```php @@ -321,16 +337,17 @@ $size = \Yii::$app->params['thumbnail.size']; $width = \Yii::$app->params['thumbnail.size'][0]; ``` -後でサムネールのサイズを変更すると決めたときは、アプリケーションの構成情報においてのみサイズを修正すればよく、これに依存するコードには少しも触れる必要がありません。 +後でサムネールのサイズを変更すると決めたときは、アプリケーションの構成情報においてのみサイズを修正すればよく、 +これに依存するコードには少しも触れる必要がありません。 #### [[yii\base\Application::sourceLanguage|sourceLanguage]] -このプロパティはアプリケーション・コードが書かれている言語を指定するものです。 -デフォルト値は `'en-US'`、アメリカ合衆国の英語です。 +このプロパティはアプリケーション・コードが書かれている言語を指定するものです。デフォルト値は `'en-US'`、アメリカ合衆国の英語です。 あなたのコードのテキストのコンテントが英語以外で書かれているときは、このプロパティを構成しなければなりません。 -[language](#language) プロパティと同様に、このプロパティは [IETF 言語タグ](http://ja.wikipedia.org/wiki/IETF%E8%A8%80%E8%AA%9E%E3%82%BF%E3%82%B0) に従って構成しなければなりません。 +[language](#language) プロパティと同様に、このプロパティは +[IETF 言語タグ](http://ja.wikipedia.org/wiki/IETF%E8%A8%80%E8%AA%9E%E3%82%BF%E3%82%B0) に従って構成しなければなりません。 例えば、`en` は英語を意味し、`en-US` はアメリカ合衆国の英語を意味します。 このプロパティに関する詳細は [国際化](tutorial-i18n.md) のセクションで読むことが出来ます。 @@ -357,14 +374,14 @@ $width = \Yii::$app->params['thumbnail.size'][0]; ### 有用なプロパティ -この項で説明されるプロパティは通常は構成されません。というのは、そのデフォルト値が通常の規約を指定しているからです。 +この項で説明されるプロパティは通常は構成されません。というのは、そのデフォルト値が通常の規約に由来するものであるからです。 しかしながら、規約を破る必要がある場合には、これらのプロパティを構成することが出来ます。 #### [[yii\base\Application::charset|charset]] このプロパティはアプリケーションが使う文字セットを指定するものです。 -デフォルト値は `'UTF-8'` であり、あなたのアプリケーションが多数の非ユニコード・データを使うレガシー・システムと連携するのでなければ、たいていのアプリケーションでは、そのままにしておくべきです。 +デフォルト値は `'UTF-8'` であり、多数の非ユニコード・データを使うレガシー・システムを扱っている場合を除けば、たいていのアプリケーションでは、そのままにしておくべきです。 #### [[yii\base\Application::defaultRoute|defaultRoute]] @@ -374,10 +391,12 @@ $width = \Yii::$app->params['thumbnail.size'][0]; 例えば、`help`、`post/create`、`admin/post/create` などです。 アクション ID が与えられていない場合は、[[yii\base\Controller::defaultAction]] で指定されるデフォルト値を取ります。 -[[yii\web\Application|ウェブ・アプリケーション]] では、このプロパティのデフォルト値は `'site'` であり、その意味するところは、`SiteController` コントローラとそのデフォルト・アクションが使用されるべきである、ということです。 +[[yii\web\Application|ウェブ・アプリケーション]] では、このプロパティのデフォルト値は `'site'` であり、 +その意味するところは、`SiteController` コントローラとそのデフォルト・アクションが使用されるべきである、ということです。 結果として、ルートを指定せずにアプリケーションにアクセスすると、`app\controllers\SiteController::actionIndex()` の結果が表示されます。 -[[yii\console\Application|コンソール・アプリケーション]] では、デフォルト値は `'help'` であり、コア・コマンドの [[yii\console\controllers\HelpController::actionIndex()]] が使用されるべきであるという意味です。 +[[yii\console\Application|コンソール・アプリケーション]] では、デフォルト値は `'help'` であり、 +コア・コマンドの [[yii\console\controllers\HelpController::actionIndex()]] が使用されるべきであるという意味です。 結果として、何も引数を与えずに `yii` というコマンドを実行すると、ヘルプ情報が表示されることになります。 @@ -419,7 +438,8 @@ $width = \Yii::$app->params['thumbnail.size'][0]; このプロパティは、[ビュー](structure-views.md) をレンダリングするときに使われるべきデフォルトのレイアウトを指定するものです。 デフォルト値は `'main'` であり、[レイアウト・パス](#layoutPath) の下にある `main.php` というファイルが使われるべきことを意味します。 -[レイアウト・パス](#layoutPath) と [ビュー・パス](#viewPath) の両方がデフォルト値を取る場合、デフォルトのレイアウト・ファイルは `@app/views/layouts/main.php` というパス・エイリアスとして表すことが出来ます。 +[レイアウト・パス](#layoutPath) と [ビュー・パス](#viewPath) の両方がデフォルト値を取る場合、デフォルトのレイアウト・ファイルは +`@app/views/layouts/main.php` というパス・エイリアスとして表すことが出来ます。 滅多には無いことですが、レイアウトをデフォルトで無効にしたい場合は、このプロパティを `false` として構成することが出来ます。 @@ -427,10 +447,10 @@ $width = \Yii::$app->params['thumbnail.size'][0]; #### [[yii\base\Application::layoutPath|layoutPath]] このプロパティは、レイアウト・ファイルが捜されるべきパスを指定するものです。 -デフォルト値は、[ビューパス](#viewPath) の下の `layouts` サブ・ディレクトリです。 +デフォルト値は、[ビュー・パス](#viewPath) の下の `layouts` サブ・ディレクトリです。 [ビュー・パス](#viewPath) がデフォルト値を取る場合、デフォルトのレイアウト・パスは `@app/views/layouts` というパス・エイリアスとして表すことが出来ます。 -このプロパティはディレクトリまたはパス [エイリアス](concept-aliases.md) として構成することが出来ます。 +このプロパティはディレクトリまたはパス・[エイリアス](concept-aliases.md) として構成することが出来ます。 #### [[yii\base\Application::runtimePath|runtimePath]] @@ -438,7 +458,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; このプロパティは、ログ・ファイルやキャッシュ・ファイルなどの一時的ファイルを生成することが出来るパスを指定するものです。 デフォルト値は、`@app/runtime` というエイリアスで表現されるディレクトリです。 -このプロパティはディレクトリまたはパス [エイリアス](concept-aliases.md) として構成することが出来ます。 +このプロパティはディレクトリまたはパス・[エイリアス](concept-aliases.md) として構成することが出来ます。 ランタイムパスは、アプリケーションを実行するプロセスによって書き込みが可能なものでなければならないことに注意してください。 そして、この下にある一時的ファイルは秘匿を要する情報を含みうるものですので、ランタイム・パスはエンド・ユーザによるアクセスから保護されなければなりません。 @@ -447,18 +467,17 @@ $width = \Yii::$app->params['thumbnail.size'][0]; #### [[yii\base\Application::viewPath|viewPath]] -このプロパティはビュー・ファイルが配置されるルート・ディレクトリを指定するものです。 -デフォルト値は、`@app/views` というエイリアスで表現されるディレクトリです。 +このプロパティはビュー・ファイルが配置されるルート・ディレクトリを指定するものです。デフォルト値は、`@app/views` というエイリアスで表現されるディレクトリです。 このプロパティはディレクトリまたはパス・[エイリアス](concept-aliases.md) として構成することが出来ます。 #### [[yii\base\Application::vendorPath|vendorPath]] このプロパティは、[Composer](https://getcomposer.org) によって管理される vendor ディレクトリを指定するものです。 -Yii フレームワークを含めて、あなたのアプリケーションによって使われる全てのサードパーティ・ライブラリを格納するディレクトリです。 +Yii フレームワークを含めて、あなたのアプリケーションによって使われる全てのサード・パーティ・ライブラリを格納するディレクトリです。 デフォルト値は、`@app/vendor` というエイリアスで表現されるディレクトリです。 -このプロパティはディレクトリまたはパス [エイリアス](concept-aliases.md) として構成することが出来ます。 +このプロパティはディレクトリまたはパス・[エイリアス](concept-aliases.md) として構成することが出来ます。 このプロパティを修正するときは、必ず、Composer の構成もそれに合せて修正してください。 このパスに簡単にアクセスできるように、Yii は `@vendor` というパス・エイリアスを事前に定義しています。 @@ -472,7 +491,7 @@ Yii リリースに含まれているコア・コマンドを有効にすべき ## アプリケーションのイベント -アプリケーションはリクエストを処理するライフ・サイクルの中でいくつかのイベントをトリガします。 +アプリケーションはリクエストを処理するライフサイクルの中でいくつかのイベントをトリガします。 これらのイベントに対して、下記のようにして、アプリケーションの構成情報の中でイベント・ハンドラをアタッチすることが出来ます。 ```php @@ -483,7 +502,8 @@ Yii リリースに含まれているコア・コマンドを有効にすべき ] ``` -`on eventName` という構文の使い方については、[構成情報](concept-configurations.md#configuration-format) のセクションで説明されています。 +`on eventName` という構文の使い方については、[構成情報](concept-configurations.md#configuration-format) +のセクションで説明されています。 別の方法として、アプリケーションのインスタンスが生成された後、[ブートストラップの過程](runtime-bootstrapping.md) の中でイベント・ハンドラをアタッチすることも出来ます。 例えば、 @@ -496,8 +516,7 @@ Yii リリースに含まれているコア・コマンドを有効にすべき ### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_BEFORE_REQUEST]] -このイベントは、アプリケーションがリクエストを処理する *前* にトリガされます。 -実際のイベント名は `beforeRequest` です。 +このイベントは、アプリケーションがリクエストを処理する *前* にトリガされます。実際のイベント名は `beforeRequest` です。 このイベントがトリガされるときには、アプリケーションのインスタンスは既に構成されて初期化されています。 ですから、イベント・メカニズムを使って、リクエスト処理のプロセスに干渉するカスタム・コードを挿入するのには、ちょうど良い場所です。 @@ -509,7 +528,8 @@ Yii リリースに含まれているコア・コマンドを有効にすべき このイベントは、アプリケーションがリクエストの処理を完了した *後*、レスポンスを送信する *前* にトリガされます。 実際のイベント名は `afterRequest` です。 -このイベントがトリガされるときにはリクエストの処理は完了していますので、この機をとらえて、リクエストに対する何らかの後処理をしたり、レスポンスをカスタマイズしたりすることが出来ます。 +このイベントがトリガされるときにはリクエストの処理は完了していますので、この機をとらえて、 +リクエストに対する何らかの後処理をしたり、レスポンスをカスタマイズしたりすることが出来ます。 [[yii\web\Response|response]] コンポーネントも、エンド・ユーザにレスポンスのコンテントを送出する間にいくつかのイベントをトリガすることに注意してください。 それらのイベントは、このイベントの *後* にトリガされます。 @@ -536,8 +556,9 @@ Yii リリースに含まれているコア・コマンドを有効にすべき ``` 同じ `beforeAction` イベントが、[モジュール](structure-modules.md) と [コントローラ](structure-controllers.md) からもトリガされることに注意してください。 -アプリケーション・オブジェクトが最初にこのイベントをトリガし、次に (もし有れば) モジュールが、そして最後にコントローラがこのイベントをトリガします。 -イベント・ハンドラが [[yii\base\ActionEvent::isValid]] を `false` にセットすると、後続のイベントはトリガされません。 +アプリケーション・オブジェクトが最初にこのイベントをトリガし、次に (もし有れば) モジュールが、 +そして最後にコントローラがこのイベントをトリガします。 +いずれかのイベント・ハンドラが [[yii\base\ActionEvent::isValid]] を `false` にセットすると、後続のイベントはトリガされません。 ### [[yii\base\Application::EVENT_AFTER_ACTION|EVENT_AFTER_ACTION]] @@ -562,26 +583,29 @@ Yii リリースに含まれているコア・コマンドを有効にすべき 同じ `afterAction` イベントが、[モジュール](structure-modules.md) と [コントローラ](structure-controllers.md) からもトリガされることに注意してください。 これらのオブジェクトは、`beforeAction` の場合とは逆の順でイベントをトリガします。 -すなわち、コントローラ・オブジェクトが最初にこのイベントをトリガし、次に (もし有れば) モジュールが、そして最後にアプリケーションがこのイベントをトリガします。 +すなわち、コントローラ・オブジェクトが最初にこのイベントをトリガし、次に (もし有れば) モジュールが、 +そして最後にアプリケーションがこのイベントをトリガします。 -## アプリケーションのライフ・サイクル +## アプリケーションのライフサイクル -![アプリケーションのライフ・サイクル](images/application-lifecycle.png) +![アプリケーションのライフサイクル](images/application-lifecycle.png) -[エントリ・スクリプト](structure-entry-scripts.md) が実行されて、リクエストが処理されるとき、アプリケーションは次のようなライフ・サイクルを経ます。 +[エントリ・スクリプト](structure-entry-scripts.md) が実行されて、リクエストが処理されるとき、 +アプリケーションは次のようなライフサイクルを経ます。 1. エントリ・スクリプトがアプリケーションの構成情報を配列として読み出す。 2. エントリ・スクリプトがアプリケーションの新しいインスタンスを作成する。 - * [[yii\base\Application::preInit()|preInit()]] が呼び出されて、[[yii\base\Application::basePath|basePath]] のような、優先度の高いアプリケーション・プロパティを構成する。 + * [[yii\base\Application::preInit()|preInit()]] が呼び出されて、[[yii\base\Application::basePath|basePath]] のような、 + 優先度の高いアプリケーション・プロパティを構成する。 * [[yii\base\Application::errorHandler|エラー・ハンドラ]] を登録する。 * アプリケーションのプロパティを構成する。 - * [[yii\base\Application::init()|init()]] が呼ばれ、そこから更に、ブートストラップ・コンポーネントを走らせるために、[[yii\base\Application::bootstrap()|bootstrap()]] が呼ばれる。 + * [[yii\base\Application::init()|init()]] が呼ばれ、そこから更に、ブートストラップ・コンポーネントを走らせるために、 + [[yii\base\Application::bootstrap()|bootstrap()]] が呼ばれる。 3. エントリ・スクリプトが [[yii\base\Application::run()]] を呼んで、アプリケーションを走らせる。 * [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_BEFORE_REQUEST]] イベントをトリガする。 * リクエストを処理する: リクエストを [ルート](runtime-routing.md) とそれに結び付くパラメータとして解決する。 - ルートによって指定されたモジュール、コントローラ、および、アクションを作成する。 - そしてアクションを実行する。 + ルートによって指定されたモジュール、コントローラ、および、アクションを作成する。そしてアクションを実行する。 * [[yii\base\Application::EVENT_AFTER_REQUEST|EVENT_AFTER_REQUEST]] イベントをトリガする。 * エンド・ユーザにレスポンスを送信する。 4. エントリ・スクリプトがアプリケーションから終了ステータスを受け取り、リクエストの処理を完了する。 diff --git a/docs/guide-ja/structure-assets.md b/docs/guide-ja/structure-assets.md index 6ba031d..3f59085 100644 --- a/docs/guide-ja/structure-assets.md +++ b/docs/guide-ja/structure-assets.md @@ -1,8 +1,7 @@ アセット ======== -Yii では、アセットは、ウェブ・ページで参照できるファイルを意味します。 -アセットは CSS ファイルであったり、JavaScript ファイルであったり、画像やビデオのファイルであったりします。 +Yii では、アセットは、ウェブ・ページで参照できるファイルを意味します。アセットは CSS ファイルであったり、JavaScript ファイルであったり、画像やビデオのファイルであったりします。 アセットはウェブでアクセス可能なディレクトリに配置され、ウェブ・サーバによって直接に提供されます。 たいていの場合、アセットはプログラム的に管理する方が望ましいものです。 @@ -14,7 +13,8 @@ Yii では、アセットは、ウェブ・ページで参照できるファイ ## アセット・バンドル -Yii はアセットを *アセット・バンドル* を単位として管理します。アセット・バンドルは、簡単に言えば、あるディレクトリの下に集められた一群のアセットです。 +Yii はアセットを *アセット・バンドル* を単位として管理します。アセット・バンドルは、簡単に言えば、 +あるディレクトリの下に集められた一群のアセットです。 [ビュー](structure-views.md) の中でアセット・バンドルを登録すると、バンドルの中の CSS や JavaScript のファイルがレンダリングされるウェブ・ページに挿入されます。 @@ -22,8 +22,8 @@ Yii はアセットを *アセット・バンドル* を単位として管理し アセット・バンドルは [[yii\web\AssetBundle]] から拡張された PHP クラスとして定義されます。 バンドルの名前は、対応する PHP クラスの完全修飾名 (先頭のバック・スラッシュを除く) です。 -アセット・バンドルクラスは [オートロード可能](concept-autoloading.md) でなければなりません。 -アセット・バンドルクラスは、通常、アセットがどこに置かれているか、バンドルがどういう CSS や JavaScript のファイルを含んでいるか、そして、バンドルが他のバンドルにどのように依存しているかを定義します。 +アセット・バンドル・クラスは [オートロード可能](concept-autoloading.md) でなければなりません。 +アセット・バンドル・クラスは、通常、アセットがどこに置かれているか、バンドルがどういう CSS や JavaScript のファイルを含んでいるか、そして、バンドルが他のバンドルにどのように依存しているかを定義します。 以下のコードは [ベーシック・プロジェクト・テンプレート](start-installation.md) によって使用されているメインのアセット・バンドルを定義するものです。 @@ -57,15 +57,17 @@ class AppAsset extends AssetBundle 以下、[[yii\web\AssetBundle]] のプロパティに関して、更に詳細に説明します。 * [[yii\web\AssetBundle::sourcePath|sourcePath]]: このバンドルのアセット・ファイルを含むルート・ディレクトリを指定します。 - ルート・ディレクトリがウェブからアクセス可能でない場合に、このプロパティをセットしなければなりません。 + ルート・ディレクトリがウェブ・アクセス可能でない場合に、このプロパティをセットしなければなりません。 そうでない場合は、代りに、[[yii\web\AssetBundle::basePath|basePath]] と [[yii\web\AssetBundle::baseUrl|baseUrl]] のプロパティをセットしなければなりません。 [パス・エイリアス](concept-aliases.md) をここで使うことが出来ます。 -* [[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) をここで使うことが出来ます。 * [[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) をここで使うことが出来ます。 * [[yii\web\AssetBundle::css|css]]: このバンドルに含まれている CSS ファイルをリストする配列です。 ディレクトリの区切りとしてフォワード・スラッシュ "/" だけを使わなければならないことに注意してください。 @@ -77,11 +79,16 @@ class AppAsset extends AssetBundle 実際のファイルのパスは、この相対パスの前に [[yii\web\AssetManager::basePath]] を付けることによって決定されます。 また、実際の URL は、この相対パスの前に [[yii\web\AssetManager::baseUrl]] を付けることによって決定されます。 - 外部の JavaScript ファイルを表す絶対 URL。 - 例えば、`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` など。 + 例えば、`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` など。 * [[yii\web\AssetBundle::depends|depends]]: このバンドルが依存しているアセット・バンドルの名前をリストする配列です (バンドルの依存関係については、すぐ後で説明します)。 -* [[yii\web\AssetBundle::jsOptions|jsOptions]]: このバンドルにある *全て* の JavaScript ファイルについて、それを登録するときに呼ばれる [[yii\web\View::registerJsFile()]] メソッドに渡されるオプションを指定します。 -* [[yii\web\AssetBundle::publishOptions|publishOptions]]: ソースのアセット・ファイルをウェブ・ディレクトリに発行するときに呼ばれる [[yii\web\AssetManager::publish()]] メソッドに渡されるオプションを指定します。 +* [[yii\web\AssetBundle::jsOptions|jsOptions]]: このバンドルにある *全て* の JavaScript ファイルについて、 + それを登録するときに呼ばれる [[yii\web\View::registerJsFile()]] メソッドに渡されるオプションを指定します。 +* [[yii\web\AssetBundle::cssOptions|cssOptions]]: このバンドルにある *全て* の CSS ファイルについて、 + それを登録するときに呼ばれる [[yii\web\View::registerCssFile()]] メソッドに渡されるオプションを指定します。 +* [[yii\web\AssetBundle::publishOptions|publishOptions]]: ソースのアセット・ファイルをウェブ・ディレクトリに発行するときに呼ばれる + [[yii\web\AssetManager::publish()]] メソッドに渡されるオプションを指定します。 これは [[yii\web\AssetBundle::sourcePath|sourcePath]] プロパティを指定した場合にだけ使用されます。 @@ -89,43 +96,53 @@ class AppAsset extends AssetBundle アセットは、配置場所を基準にして、次のように分類することが出来ます。 -* ソースアセット: アセット・ファイルは、ウェブ経由で直接にアクセスすることが出来ない PHP ソース・コードと一緒に配置されています。 - ページの中でソースアセットを使用するためには、ウェブ・ディレクトリにコピーして、いわゆる発行されたアセットに変換しなければなりません。 +* ソース・アセット: アセット・ファイルは、ウェブ経由で直接にアクセスすることが出来ない PHP ソース・コードと一緒に配置されています。 + ページの中でソース・アセットを使用するためには、ウェブ・ディレクトリにコピーして、いわゆる発行されたアセットに変換しなければなりません。 このプロセスは、すぐ後で詳しく説明しますが、*アセット発行* と呼ばれます。 * 発行されたアセット: アセット・ファイルはウェブ・ディレクトリに配置されており、したがってウェブ経由で直接にアクセスすることが出来ます。 -* 外部アセット: アセット・ファイルは、あなたのウェブ・アプリケーションをホストしているのとは別のウェブ・サーバ上に配置されています。 +* 外部アセット: アセット・ファイルは、あなたのウェブ・アプリケーションをホストしているのとは別のウェブ・サーバ上に + 配置されています。 -アセット・バンドル・クラスを定義するときに、[[yii\web\AssetBundle::sourcePath|sourcePath]] プロパティを指定した場合は、相対パスを使ってリストに挙げられたアセットは全てソースアセットであると見なされます。 +アセット・バンドル・クラスを定義するときに、[[yii\web\AssetBundle::sourcePath|sourcePath]] プロパティを指定した場合は、 +相対パスを使ってリストに挙げられたアセットは全てソース・アセットであると見なされます。 このプロパティを指定しなかった場合は、アセットは発行されたアセットであることになります (したがって、[[yii\web\AssetBundle::basePath|basePath]] と [[yii\web\AssetBundle::baseUrl|baseUrl]] を指定して、アセットがどこに配置されているかを Yii に知らせなければなりません)。 アプリケーションに属するアセットは、不要なアセット発行プロセスを避けるために、ウェブ・ディレクトリに置くことが推奨されます。 -前述の例において `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) の場合は、アセットがソース・コードと一緒にウェブからアクセス出来ないディレクトリに配置されているため、アセット・バンドル・クラスを定義するときには [[yii\web\AssetBundle::sourcePath|sourcePath]] プロパティを指定しなければなりません。 +[エクステンション](structure-extensions.md) の場合は、 +アセットがソース・コードと一緒にウェブからアクセス出来ないディレクトリに配置されているため、 +アセット・バンドル・クラスを定義するときには [[yii\web\AssetBundle::sourcePath|sourcePath]] プロパティを指定しなければなりません。 > Note: `@webroot/assets` を [[yii\web\AssetBundle::sourcePath|ソース・パス]] として使ってはいけません。 このディレクトリは、デフォルトでは、[[yii\web\AssetManager|アセット・マネージャ]] がソースの配置場所から発行されたアセット・ファイルを保存する場所として使われます。 - このディレクトリの中のファイルはすべて一時的なものと見なされており、削除されることがあります。 + このディレクトリの中のファイルはすべて一時的なものと見なされており、 + 削除されることがあります。 ### アセットの依存関係 ウェブ・ページに複数の CSS や JavaScript ファイルをインクルードするときは、オーバーライドの問題を避けるために、一定の順序に従わなければなりません。 -例えば、ウェブ・ページで jQuery UI ウィジェットを使おうとするときは、jQuery JavaScript ファイルが jQuery UI JavaScript ファイルより前にインクルードされることを保証しなければなりません。 +例えば、ウェブ・ページで jQuery UI ウィジェットを使おうとするときは、jQuery JavaScript ファイルが +jQuery UI JavaScript ファイルより前にインクルードされることを保証しなければなりません。 このような順序付けをアセット間の依存関係と呼びます。 アセットの依存関係は、主として、[[yii\web\AssetBundle::depends]] プロパティによって指定されます。 `AppAsset` の例では、このアセット・バンドルは他の二つのアセット・バンドル、すなわち、[[yii\web\YiiAsset]] と [[yii\bootstrap\BootstrapAsset]] に依存しています。 -このことは、`AppAsset` の CSS と JavaScript ファイルが、依存している二つのアセット・バンドルにあるファイルの *後に* インクルードされることを意味します。 +このことは、`AppAsset` の CSS と JavaScript ファイルが、依存している二つのアセット・バンドルにあるファイルの *後に* +インクルードされることを意味します。 アセットの依存関係は中継されます。つまり、バンドル A が B に依存し、B が C に依存していると、A は C にも依存していることになります。 ### アセットのオプション -[[yii\web\AssetBundle::cssOptions|cssOptions]] および [[yii\web\AssetBundle::jsOptions|jsOptions]] のプロパティを指定して、CSS と JavaScript ファイルがページにインクルードされる方法をカスタマイズすることが出来ます。 -これらのプロパティの値は、[ビュー](structure-views.md) が CSS と JavaScript ファイルをインクルードするために、[[yii\web\View::registerCssFile()]] および [[yii\web\View::registerJsFile()]] メソッドを呼ぶときに、それぞれ、オプションとして引き渡されます。 +[[yii\web\AssetBundle::cssOptions|cssOptions]] および [[yii\web\AssetBundle::jsOptions|jsOptions]] のプロパティを指定して、 +CSS と JavaScript ファイルがページにインクルードされる方法をカスタマイズすることが出来ます。 +これらのプロパティの値は、[ビュー](structure-views.md) が CSS と JavaScript ファイルをインクルードするために、[[yii\web\View::registerCssFile()]] および +[[yii\web\View::registerJsFile()]] メソッドを呼ぶときに、それぞれ、オプションとして引き渡されます。 > Note: バンドル・クラスでセットしたオプションは、バンドルの中の *全て* の CSS/JavaScript ファイルに適用されます。 いろいろなファイルに別々のオプションを使用したい場合は、上述した [[yii\web\AssetBundle::css|css] の形式を使うか、 @@ -158,7 +175,8 @@ JavaScript ファイルをページの head セクションにインクルード public $jsOptions = ['position' => \yii\web\View::POS_HEAD]; ``` -デフォルトでは、アセット・バンドルが発行されるときは、[[yii\web\AssetBundle::sourcePath]] で指定されたディレクトリの中にある全てのコンテントが発行されます。 +デフォルトでは、アセット・バンドルが発行されるときは、[[yii\web\AssetBundle::sourcePath]] +で指定されたディレクトリの中にある全てのコンテントが発行されます。 [[yii\web\AssetBundle::publishOptions|publishOptions]] プロパティを構成することによって、この振る舞いをカスタマイズすることが出来ます。 例えば、[[yii\web\AssetBundle::sourcePath]] の一個または数個のサブ・ディレクトリだけを発行するために、アセット・バンドル・クラスの中で下記のようにすることが出来ます。 @@ -202,8 +220,7 @@ ___ この方法は NPM または Bower のパッケージを必要とするプロジェクトの大半の要求を満たすことが出来ます。 > Note: 2.0.13 以降、ベーシック・アプリケーション・テンプレートとアドバンスト・アプリケーション・テンプレートはともに、 - デフォルトで asset-packagist を使うように前もって構成されていますので、 - このセクションは読み飛ばすことが出来ます。 + デフォルトで asset-packagist を使うように前もって構成されていますので、このセクションは読み飛ばすことが出来ます。 プロジェクトの `composer.json` に、下記を追加します。 @@ -256,16 +273,18 @@ Yii を使ってこれらのアセットを発行したい場合は、プロジ } ``` -> Note: `fxp/composer-asset-plugin` は、asset-packagist に比べて、`composer update` コマンドを著しく遅くします。 +> Note: `fxp/composer-asset-plugin` は、asset-packagist に比べて、`composer update` + コマンドを著しく遅くします。 ____ Composer で Bower と NPM をサポートできるように構成した後は: 1. アプリケーションまたはエクステンションの `composer.json` ファイルを修正して、パッケージを `require` のエントリに入れます。 - ライブラリを参照するのに、`bower-asset/PackageName` (Bower パッケージ) または `npm-asset/PackageName` (NPM パッケージ) を使わなければなりません。 + ライブラリを参照するのに、`bower-asset/PackageName` (Bower パッケージ) または `npm-asset/PackageName` (NPM パッケージ) + を使わなければなりません。 2. `composer update` を実行します。 -3. アセット・バンドルクラスを作成して、アプリケーションまたはエクステンションで使う予定の JavaScript/CSS ファイルをリストに挙げます。 +3. アセット・バンドル・クラスを作成して、アプリケーションまたはエクステンションで使う予定の JavaScript/CSS ファイルをリストに挙げます。 [[yii\web\AssetBundle::sourcePath|sourcePath]] プロパティは、`@bower/PackageName` または `@npm/PackageName` としなければなりません。 これは、Composer が Bower または NPM パッケージを、このエイリアスに対応するディレクトリにインストールするためです。 @@ -284,20 +303,23 @@ use app\assets\AppAsset; AppAsset::register($this); // $this はビュー・オブジェクトを表す ``` -> Info: [[yii\web\AssetBundle::register()]] メソッドは、[[yii\web\AssetBundle::basePath|basePath]] や [[yii\web\AssetBundle::baseUrl|baseUrl]] など、発行されたアセットに関する情報を含むアセット・バンドル・オブジェクトを返します。 +> Info: [[yii\web\AssetBundle::register()]] メソッドは、[[yii\web\AssetBundle::basePath|basePath]] や [[yii\web\AssetBundle::baseUrl|baseUrl]] など、 + 発行されたアセットに関する情報を含むアセット・バンドル・オブジェクトを返します。 他の場所でアセット・バンドルを登録しようとするときは、必要とされるビュー・オブジェクトを提供しなければなりません。 -例えば、[ウィジェット](structure-widgets.md) クラスの中でアセット・バンドルを登録するためには、`$this->view` によってビュー・オブジェクトを取得することが出来ます。 +例えば、[ウィジェット](structure-widgets.md)・クラスの中でアセット・バンドルを登録するためには、`$this->view` によってビュー・オブジェクトを取得することが出来ます。 アセット・バンドルがビューに登録されるとき、舞台裏では、依存している全てのアセット・バンドルが Yii によって登録されます。 -そして、アセット・バンドルがウェブからはアクセス出来ないディレクトリに配置されている場合は、アセット・バンドルがウェブ・ディレクトリに発行されます。 +そして、アセット・バンドルがウェブからはアクセス出来ないディレクトリに配置されている場合は、 +アセット・バンドルがウェブ・ディレクトリに発行されます。 その後、ビューがページをレンダリングするときに、登録されたバンドルのリストに挙げられている CSS と JavaScript ファイルのための `` タグと `