Skip to content

Commit

Permalink
Merge branch '3.0' into 3.next
Browse files Browse the repository at this point in the history
  • Loading branch information
markstory committed Feb 17, 2018
2 parents 10e989d + 6e9181c commit 2ac72cc
Show file tree
Hide file tree
Showing 174 changed files with 53,536 additions and 99 deletions.
5 changes: 5 additions & 0 deletions en/controllers/components/authentication.rst
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,11 @@ want to set config ``unauthorizedRedirect`` to ``false`` so that AuthComponent
throws a ``ForbiddenException`` instead of the default behavior of redirecting to
referrer.

The ``unauthorizedRedirect`` option only applies to authenticated users. When
a user is not yet authenticated and you do not want the user to be redirected,
you will need to load one or more stateless authenticators, like ``Basic`` or
``Digest``.

Authentication objects can implement a ``getUser()`` method that can be used to
support user login systems that don't rely on cookies. A typical getUser method
looks at the request/environment and uses the information there to confirm the
Expand Down
3 changes: 3 additions & 0 deletions en/core-libraries/validation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,9 @@ Then ensure that your validation method has the second context parameter. ::
{
$userid = $context['providers']['passed']['userid'];
}
Closures should return boolean true if the validation passes. If it fails, return boolean false or for a custom error message return a string.


Conditional Validation
----------------------
Expand Down
2 changes: 1 addition & 1 deletion en/development/errors.rst
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ override the ``_getController()`` method in your exception renderer::

class AppExceptionRenderer extends ExceptionRenderer
{
protected function _getController($exception)
protected function _getController()
{
return new SuperCustomErrorController();
}
Expand Down
11 changes: 8 additions & 3 deletions en/orm/saving-data.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1138,14 +1138,19 @@ Bulk Updates
There may be times when updating rows individually is not efficient or
necessary. In these cases it is more efficient to use a bulk-update to modify
many rows at once::
many rows at once, by assigning the new field values, and conditions for the update::

// Publish all the unpublished articles.
function publishAllUnpublished()
{
$this->updateAll(
['published' => true], // fields
['published' => false] // conditions
[ // fields
'published' => true,
'publish_date' => FrozenTime::now()
],
[ // conditions
'published' => false
]
);
}

Expand Down
7 changes: 1 addition & 6 deletions es/tutorials-and-examples/blog/blog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -142,11 +142,6 @@ para más información, pero basta decir que nombrando nuestra tabla 'articles'
automáticamente lo vincula a nuestro modelo Articles y que campos
llamados `modified` y `created` serán gestionados automáticamente por CakePHP.

Al llamar 'articles' a nuestra tabla de artículos, estamos diciendo a CakePHP
que vincule esta tabla por defecto al Modelo 'Articles', e incluiya los campos
'modified' y 'created' con ese nombre, los cuáles serán automáticamente
administrados por CakePHP.

Configurando la Base de Datos
=============================

Expand Down Expand Up @@ -260,4 +255,4 @@ Ahora continúa hacia :doc:`/tutorials-and-examples/blog/part-two` para empezar
a construir tu primera aplicación en CakePHP.

.. meta::
:title lang=es: Tutorial Blog
:title lang=es: Tutorial Blog
2 changes: 1 addition & 1 deletion ja/appendices/3-0-migration-guide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ CakePHP 3.0 の設定は、以前のバージョンに比べて大幅に異な

設定キー ``www_root`` は、一貫性を保つために ``wwwRoot`` に変更されました。
あなたの **app.php** 設定ファイルと同様に、 ``Configure::read('App.wwwRoot')``
の利用カ所も修正してください
の利用箇所も修正してください

新しい ORM
==========
Expand Down
2 changes: 1 addition & 1 deletion ja/appendices/3-1-migration-guide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ AuthComponent
- 新しい設定オプション ``storage`` が追加されました。 ``AuthComponent`` がユーザーの
レコードを格納するために使用するストレージ・クラス名が含まれています。
デフォルトでは ``SessionStorage`` が使用されます。ステートレスオーセンティケーターを
使用している場合、 ``MemoryStorage`` を代わりに 使用しするために ``AuthComponent`` を
使用している場合、 ``MemoryStorage`` を代わりに 使用するために ``AuthComponent`` を
設定する必要があります。
- 新しい設定オプション ``checkAuthIn`` が追加されました。認証チェックが行われるべき対象の
イベントの名前が含まれています。デフォルトでは ``Controller.startup`` が使用されますが、
Expand Down
2 changes: 1 addition & 1 deletion ja/appendices/glossary.rst
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
// これが生成される
class="my-class" _target="blank"

オプションが最小化できるか、名前そのもが値として許可される場合は
オプションが最小化できるか、名前そのものが値として許可される場合は
``true`` が利用できます。 ::

// これを与えると
Expand Down
14 changes: 14 additions & 0 deletions ja/chronos.rst
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,20 @@ Chronos オブジェクトは細やかに値を変更できるメソッドを提
$time->next(ChronosInterface::TUESDAY);
$time->previous(ChronosInterface::MONDAY);

:abbr:`DST (夏時間)` の遷移の前後で日付/時間を変更すると、
あなたの操作で時間が増減するかもしれませんが、その結果、意図しない時間の値になります。
これらの問題を回避するには、最初にタイムゾーンを ``UTC`` に変更し、時間を変更します。 ::

// 余分な時間が追加されました
$time = new Chronos('2014-03-30 00:00:00', 'Europe/London');
debug($time->modify('+24 hours')); // 2014-03-31 01:00:00

// 最初に UTC に切り替え、そして更新
$time = $time->setTimezone('UTC')
->modify('+24 hours');

時間を変更すると、元のタイムゾーンを追加してローカライズされた時間を取得することができます。

比較メソッド
------------

Expand Down
4 changes: 2 additions & 2 deletions ja/contributing/documentation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -348,7 +348,7 @@ Sphinx が出力する警告を防ぐ

Sphinx は関数が複数のファイルから参照されていると警告を出力します。
これは、関数を2度追加していないことを確認する良い方法ではありますが、
実査には複数回にわたって関数を書きたいときももありえます
実際には複数回にわたって関数を書きたいときもありえます
たとえば、 `debug object` が `/development/debugging` と
`/core-libraries/global-constants-and-functions` から参照されます。
このケースでは、debug 関数の下に ``:noindex:`` を加えることで、
Expand Down Expand Up @@ -434,7 +434,7 @@ sphinx の勧告 (*Admonitions*) は、まさにそのために使われます
* ``.. versionadded:: X.Y.Z`` "バージョン追加" 勧告は特定のバージョンで追加された
新機能特有の注記を表示するために使われます。
``X.Y.Z`` はその機能が追加されたバージョンです。
* ``.. deprecated:: X.Y.Z`` "バージョン追加" 勧告とは反対に, "撤廃" 勧告は、
* ``.. deprecated:: X.Y.Z`` "バージョン追加" 勧告とは反対に "撤廃" 勧告は、
廃止される機能を通知するために使われます。
``X.Y.Z`` はその機能が撤廃されるバージョンです。

Expand Down
140 changes: 98 additions & 42 deletions ja/core-libraries/caching.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@
.. php:class:: Cache
キャッシュは、外部のリソースからの読み込みや作成にかかる時間を短縮するためによく使用されます。
遅いリソースから速く読み込むためにもよく使用されます。頻繁に変更されない、遅いクエリーの結果や
リモートのウェブサービスへのアクセスをキャッシュに保存することができます。
一旦キャッシュに保存されると、保存されたリソースのキャッシュからの再読み込みは
リモートリソースへのアクセスより高速です

CakePHP のキャッシュは、主に ``Cache`` クラスを使用します。
このクラスは、すべての異なる種類のキャッシュの実装を扱うための、統一された API を提供する、
静的なメソッドを持ちます。CakePHP にはいくつかの組み込みのキャッシュエンジンが用意されていて
独自のキャッシュシステムを実装するための簡単な仕組みを提供します
速くより近くのストレージシステムに必要なデータの二次コピーを持つことにより、
高価なリソースや低速なリソースの読み込みを行うためにキャッシュを使用できます。
たとえば、高価なクエリの結果や頻繁に変更されないリモートウェブサービスへのアクセスを
キャッシュに格納することができます。キャッシュに保存されると、キャッシュからの読み込みは
リモートリソースにアクセスよりもはるかに高速です

CakePHP のキャッシュは、 ``Cache`` クラスを使用します。このクラスは、
様々なキャッシュの実装を扱うための静的なインターフェイスや統一された API を提供します。
CakePHP には、いくつかのキャッシュエンジンが用意されていて
独自のバックエンドを構築する必要な場合、シンプルなインターフェイスを提供します
以下が、組み込みのキャッシュエンジンです。

* ``FileCache`` File キャッシュはローカルファイルを使用するシンプルなキャッシュです。
Expand All @@ -33,27 +33,26 @@ CakePHP のキャッシュは、主に ``Cache`` クラスを使用します。
Redis は高速で、Memcached と同様の永続キャッシュシステム、アトミックな操作を提供します。

あなたが選択したキャッシュエンジンに関わらず、
アプリケーションは一貫した方法で :php:class:`Cake\\Cache\\Cache` とやり取りします。
あなたはアプリケーションが大きくなるにつれてキャッシュエンジンを交換することができます。
アプリケーションは :php:class:`Cake\\Cache\\Cache` とやり取りします。

.. _cache-configuration:

Cache クラスの設定
==================
Cache エンジンの設定
====================

.. php:staticmethod:: config($key, $config = null)
キャッシュクラスの設定はどこでもできますが、一般的には、ブート処理中に設定を行ないます
**config/app.php** ファイルで行なうのが従来からの慣習です。あなたは必要なだけ、
キャッシュの設定ができます。そして、複数のキャッシュエンジンを使用できます。
CakePHP は、2つの内部的なキャッシュの設定を使用します。 ``_cake_core_`` は、
ファイル構成の保存と、 :doc:`/core-libraries/internationalization-and-localization`
ファイルの結果のパースに使用されます。 ``_cake_model_`` は、アプリケーション上のモデルに対する
スキーマの説明を保存するために使用されます。もし、 APC や Memcached を使用している場合、
コアのキャッシュにはユニークなキーをセットしておくべきです。これは、複数アプリケーションで
別のアプリケーションのキャッシュデータを上書きしてしまうのを避けてくれます

複数の設定を使用することで、必要なだけストレージを変更できます
アプリケーションは、ブート処理中に任意の数の「エンジン」を設定できます
キャッシュエンジンの設定は、 **config/app.php** で定義されています。

最適なパフォーマンスを得るには、CakePHP では2つのキャッシュエンジンを定義する必要があります。

* ``_cake_core_`` は、ファイル構成の保存と、
:doc:`/core-libraries/internationalization-and-localization`
ファイルの結果のパースに使用されます。
* ``_cake_model_`` は、アプリケーション上のモデルに対するスキーマの説明を保存するために使用されます

複数のエンジン設定を使用することで、必要に応じてストレージを段階的に変更できます
例えば、以下のように **config/app.php** に設定できます。 ::

// ...
Expand Down Expand Up @@ -105,27 +104,86 @@ DSN を使用するとき、追加のクエリー文字列要素としてパラ
$object = new FileEngine($config);
Cache::config('other', $object);

'short' や 'long' という設定名は :php:meth:`Cake\\Cache\\Cache::write()` と
これらのエンジン設定の名前 ('short' や 'long') は :php:meth:`Cake\\Cache\\Cache::write()` と
:php:meth:`Cake\\Cache\\Cache::read()` の ``$config`` パラメーターとして使われます。
キャッシュエンジンを設定する場合は、次の構文を使用してクラス名を参照することができます。
キャッシュエンジンを設定する場合は、次の構文を使用してクラス名を参照することができます。 ::

* 'Engine' または名前空間を含まない短いクラス名。これは、あなたが使いたいキャッシュエンジンを
``Cake\Cache\Engine`` か ``App\Cache\Engine`` のどちらかであると推測します。
* :term:`プラグイン記法` は、特定のプラグインからエンジンをロードすることを可能にします。
* 完全に修飾された名前空間つきのクラス名は、従来の場所の外に位置するクラスの使用を可能にします。
* ``CacheEngine`` クラスを継承したオブジェクト。
// 省略名 (App\ または Cake 名前空間の中)
Cache::config('long', ['className' => 'File']);

// プラグインの省略名
Cache::config('long', ['className' => 'MyPlugin.SuperCache']);

// 完全な名前空間
Cache::config('long', ['className' => 'Cake\Cache\Engine\FileEngine']);

// CacheEngineInterface を実装したオブジェクト
Cache::config('long', ['className' => $myCache]);

.. note::

FileEngine 使用時に、正しいパーミッションでのキャッシュファイルを指定して作成するには、
``mask`` オプションの設定が必要です。

エンジンのオプション
--------------------

各エンジンは次のオプションを受け入れます。

* ``duration`` このキャッシュ設定内のアイテムの存続期間を指定します。
``strototime()`` 互換表現として指定されます。
* ``groups`` この設定に格納されているすべてのキーに関連付けられているグループまたは「タグ」のリスト。
キャッシュから完全なグループを削除するのに便利です。
* ``prefix`` すべてのエントリーの先頭に追加されます。
キースペースを別のキャッシュ設定または別のアプリケーションと共有する必要がある場合に適しています。
* ``probability`` キャッシュ GC クリーンアップの可能性。
0 に設定すると、 ``Cache::gc()`` が自動的に呼び出されなくなります。

FileEngine オプション
---------------------

FileEngine は次のエンジン固有オプションを使用します。

* ``isWindows`` ホストがウインドウズであるかどうかで自動的に設定されます。
* ``lock`` ファイルを書き込む前にロックする必要があるかどうか。
* ``mask`` 作成されたファイルに使用されるマスク。
* ``path`` キャッシュファイルを保存する場所へのパス。 デフォルトはシステムの一時ディレクトリです。

RedisEngine オプション
----------------------

RedisEngine は次のエンジン固有オプションを使用します。

* ``port`` Redis サーバーが動作しているポート。
* ``host`` Redis サーバーが動作しているホスト。
* ``database`` 接続に使用するデータベース番号。
* ``password`` Redis サーバーのパスワード。
* ``persistent`` Redis への永続的な接続を行うかどうか。
* ``timeout`` Redis の接続タイムアウト。
* ``unix_socket`` Redis の UNIX ソケットへのパス。

MemcacheEngine オプション
-------------------------

- ``compress`` データを圧縮するかどうか。
- ``username`` Memcache サーバーにアクセスするためのログイン名。
- ``password`` Memcache サーバーにアクセスするためのパスワード。
- ``persistent`` 永続的な接続の名前。同じ永続的な値を使用するすべての設定は、
単一の基本接続を共有します。
- ``serialize`` データをシリアライズするために使用されるシリアライザエンジン。
利用可能なエンジンは php、igbinary、json です。
php のほかに、memcached 拡張は適切なシリアライザのサポートでコンパイルする必要があります。
- ``servers`` memcached サーバーの文字列または配列。配列の場合、MemcacheEngine
はそれらをプールとして使用します。
- ``options`` memcached クライアントの追加のオプション。オプション => 値 の配列でなければなりません。
``\Memcached::OPT_*`` 定数をキーとして使用してください。

.. _cache-configuration-fallback:

キャッシュフォールバックの設定
------------------------------

書き込み不可能なフォルダに書き込む ``FileEngine`` や、 ``RedisEngine`` が Redis に
書き込み不可能なフォルダーに書き込む ``FileEngine`` や、 ``RedisEngine`` が Redis に
接続できないなど、エンジンが利用できない場合、 エンジンは ``NullEngine`` に縮退運転し、
ログ可能なエラーを引き起こします。これにより、キャッシュ障害のためにアプリケーションが
キャッチされない例外をスローするのを防ぎます。
Expand Down Expand Up @@ -437,17 +495,15 @@ Cache クラスは簡単な方法でカウンター値をインクリメント/
もしキャッシュの状態を確認する必要がある場合は、 ``enabled()`` を使用してください。

キャッシュ用ストレージエンジンの作成
キャッシュエンジンの作成
====================================

``App\Cache\Engine`` と ``$plugin\Cache\Engine`` を使用してカスタムした
``Cache`` のアダプターをプラグインとして提供することができます。
src/plugin キャッシュエンジンは、コアエンジンをオーバーライドすることもできます。
キャッシュアダプターはキャッシュディレクトリー内になければなりません。
``MyCustomCacheEngine`` という名前のキャッシュエンジンがあれば、 app/libs として
**src/Cache/Engine/MyCustomCacheEngine.php** に置かれます。
または、プラグインの一環として、 **plugins/MyPlugin/src/Cache/Engine/MyCustomCacheEngine.php**
に置かれます。プラグインのキャッシュ設定は、プラグインドット構文を使用する必要があります。 ::
独自の ``Cache`` エンジンは ``App\Cache\Engine`` やプラグインの ``$plugin\Cache\Engine``
の中に提供することができます。キャッシュエンジンはキャッシュディレクトリー内になければなりません。
``MyCustomCacheEngine`` という名前のキャッシュエンジンがあれば、
**src/Cache/Engine/MyCustomCacheEngine.php** に置かれます。また、プラグインの一部として、
**plugins/MyPlugin/src/Cache/Engine/MyCustomCacheEngine.php** に置かれます。
プラグインのキャッシュ設定は、プラグインのドット構文を使用する必要があります。 ::

Cache::config('custom', [
'className' => 'MyPlugin.MyCustomCache',
Expand Down
Loading

0 comments on commit 2ac72cc

Please sign in to comment.