From 6643bcfed22d4804f73eb11341a8ad56b6f2a8ad Mon Sep 17 00:00:00 2001 From: Nobuo Kihara Date: Fri, 16 Mar 2018 00:04:50 +0900 Subject: [PATCH] docs/guide-ja update WIP --- docs/guide-ja/caching-data.md | 33 +++++++++++++++--------- docs/guide-ja/caching-fragment.md | 3 +++ docs/guide-ja/concept-aliases.md | 3 +++ docs/guide-ja/concept-service-locator.md | 17 ++++++++++-- 4 files changed, 42 insertions(+), 14 deletions(-) diff --git a/docs/guide-ja/caching-data.md b/docs/guide-ja/caching-data.md index 473b468e7e..07408e3c9e 100644 --- a/docs/guide-ja/caching-data.md +++ b/docs/guide-ja/caching-data.md @@ -277,19 +277,13 @@ $result = Customer::getDb()->cache(function ($db) { > Info: いくつかの DBMS (例えば [MySQL](http://dev.mysql.com/doc/refman/5.1/ja/query-cache.html)) でもデータベースのサーバサイドのクエリキャッシュをサポートしています。 どちらのクエリキャッシュメカニズムも選べますが、前述した Yii のクエリキャッシュにはキャッシュの依存を柔軟に指定できるという利点があり、潜在的にはより効率的でしょう。 +2.0.14 以降は、下記のショートカットを使用することが出来ます。 -### キャッシュのフラッシュ - -保存されている全てのキャッシュデータを無効化する必要がある場合は、[[yii\caching\Cache::flush()]] を呼ぶことが出来ます。 - -コンソールから `yii cache/flush` を呼ぶことによっても、キャッシュをフラッシュすることが出来ます。 - - `yii cache`: アプリケーションで利用可能なキャッシュのリストを表示します。 - - `yii cache/flush cache1 cache2`: キャッシュコンポーネント `cache1` と `cache2` をフラッシュします -(複数のコンポーネント名をスペースで区切って渡すことが出来ます) - - `yii cache/flush-all`: アプリケーションの全てのキャッシュコンポーネントをフラッシュします。 - -> Info: デフォルトでは、コンソールアプリケーションは独立した構成情報ファイルを使用します。 -正しい結果を得るためには、ウェブとコンソールのアプリケーション構成で同じキャッシュコンポーネントを使用していることを確認してください。 +```php +(new Query())->cache(7200)->all(); +// および +User::find()->cache(7200)->all(); +``` ### 構成 @@ -376,3 +370,18 @@ $result = $db->cache(function ($db) { 例えば、いくつかの DBMS において BLOB 型のカラムを用いる場合、クエリ結果はカラムデータに対するリソースハンドラを返します。 いくつかのキャッシュストレージはサイズに制約があります。例えば Memcache では、各エントリのサイズは 1MB が上限値です。そのためクエリ結果のサイズがこの制約を越える場合、キャッシュは失敗します。 + + +### キャッシュのフラッシュ + +保存されている全てのキャッシュデータを無効化する必要がある場合は、[[yii\caching\Cache::flush()]] を呼ぶことが出来ます。 + +コンソールから `yii cache/flush` を呼ぶことによっても、キャッシュをフラッシュすることが出来ます。 + - `yii cache`: アプリケーションで利用可能なキャッシュのリストを表示します。 + - `yii cache/flush cache1 cache2`: キャッシュコンポーネント `cache1` と `cache2` をフラッシュします +(複数のコンポーネント名をスペースで区切って渡すことが出来ます) + - `yii cache/flush-all`: アプリケーションの全てのキャッシュコンポーネントをフラッシュします。 + +> Info: デフォルトでは、コンソールアプリケーションは独立した構成情報ファイルを使用します。 +正しい結果を得るためには、ウェブとコンソールのアプリケーション構成で同じキャッシュコンポーネントを使用していることを確認してください。 + diff --git a/docs/guide-ja/caching-fragment.md b/docs/guide-ja/caching-fragment.md index 2f94ed95a2..a16c7f54c2 100644 --- a/docs/guide-ja/caching-fragment.md +++ b/docs/guide-ja/caching-fragment.md @@ -163,3 +163,6 @@ if ($this->beginCache($id1)) { [[yii\base\View::renderDynamic()|renderDynamic()]] メソッドはパラメータとして PHP コードを取ります。 この PHP コードの戻り値が、ダイナミックコンテントとして扱われます。 囲んでいる断片がキャッシュから提供されるか否かにかかわらず、同じ PHP コードがすべてのリクエストに対して実行されます。 + +> Note: バージョン 2.0.14 以降、[[yii\base\DynamicContentAwareInterface]] インターフェイスとその [[yii\base\DynamicContentAwareTrait]] トレイトによって、ダイナミックコンテント API が公開されています。. +その一例としては、 [[yii\widgets\FragmentCache]] クラスを参照して下さい。 diff --git a/docs/guide-ja/concept-aliases.md b/docs/guide-ja/concept-aliases.md index 3126736e2e..a8244664e1 100644 --- a/docs/guide-ja/concept-aliases.md +++ b/docs/guide-ja/concept-aliases.md @@ -19,6 +19,9 @@ Yii::setAlias('@foo', '/path/to/foo'); // URL のエイリアス Yii::setAlias('@bar', 'http://www.example.com'); + +// \foo\Bar クラスを保持する具体的なファイルのエイリアス +Yii::setAlias('@foo/Bar.php', '/definitely/not/foo/Bar.php'); ``` > Note: エイリアスされているファイルパスや URL は、必ずしも実在するファイルまたはリソースを参照しない場合があります。 diff --git a/docs/guide-ja/concept-service-locator.md b/docs/guide-ja/concept-service-locator.md index f047126570..0b9ecf584d 100644 --- a/docs/guide-ja/concept-service-locator.md +++ b/docs/guide-ja/concept-service-locator.md @@ -11,7 +11,7 @@ Yii の中で最も一般的に使用されるサービスロケータは、`\Yi `response`、 `urlManager` などのコンポーネントです。あなたはサービスロケータによって提供される機能を通じて、 簡単に、これらのコンポーネントを構成、あるいは独自の実装に置き換え、といったことができます。 -アプリケーションオブジェクトの他に、各モジュールオブジェクトもまたサービスロケータです。 +アプリケーションオブジェクトの他に、各モジュールオブジェクトもまたサービスロケータです。 モジュールは [ツリー走査](#tree-traversal) を実装しています。 サービスロケータを使用する最初のステップは、コンポーネントを登録することです。コンポーネントは、 [[yii\di\ServiceLocator::set()]] を通じて登録することができます。次のコードは、コンポーネントを登録するさまざまな方法を示しています。 @@ -60,7 +60,7 @@ $cache = $locator->cache; サービスロケータは多くの場合、 [構成情報](concept-configurations.md) で作成されるため、 [[yii\di\ServiceLocator::setComponents()|components]] という名前の書き込み可能プロパティが提供されています。 これで一度に複数のコンポーネントを設定して登録することができます。 -次のコードは、サービスロケータ (例えば [アプリケーション](structure-applications.md)) を `db`、`cache`、`search` コンポーネントとともに構成するための構成情報配列を示しています。 +次のコードは、サービスロケータ (例えば [アプリケーション](structure-applications.md)) を `db`、`cache`、`tz`、`search` コンポーネントとともに構成するための構成情報配列を示しています。 ```php return [ @@ -73,6 +73,9 @@ return [ 'password' => '', ], 'cache' => 'yii\caching\ApcCache', + 'tz' => function() { + return new \DateTimeZone(Yii::$app->formatter->defaultTimeZone); + }, 'search' => function () { $solr = new app\components\SolrService('127.0.0.1'); // ... その他の初期化 ... @@ -110,3 +113,13 @@ return [ この方法は、Yii に属さないサードパーティのライブラリをカプセル化する Yii コンポーネントをリリースしようとする場合に、特に推奨される代替手法です。 上で示されているようなスタティックなメソッドを使ってサードパーティのオブジェクトを構築する複雑なロジックを表現します。 そうすれば、あなたのコンポーネントのユーザは、コンポーネントを構成するスタティックなメソッドを呼ぶ必要があるだけになります。 + +## ツリー走査 + +モジュールは任意にネストすることが出来ます。Yii アプリケーションは本質的にモジュールのツリーなのです。 +これらのモジュールのそれぞれがサービスロケータである訳ですから、子がその親にアクセスできるようにするのは理にかなった事です。 +これによって、モジュールは、ルートのサービスロケータを参照して `Yii::$app->get('db')` とする代りに、`$this->get('db')` とすることが出来ます。 +また、開発者にモジュール内で構成をオーバーライドするオプションを提供できることも、この仕組の利点です。 + +モジュールからサービスを引き出そうとする全てのリクエストは、そのモジュールが要求に応じられない場合は、すべてその親に渡されます。 +