Skip to content

Commit 92b906b

Browse files
committedJul 2, 2015
Merge pull request cakephp#2919 from okinaka/update-components
[ja] update components.rst
2 parents 9451b93 + 89712cd commit 92b906b

File tree

1 file changed

+74
-54
lines changed

1 file changed

+74
-54
lines changed
 

‎ja/controllers/components.rst

+74-54
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,15 @@
11
コンポーネント
22
##############
33

4-
コンポーネントはコントローラ間で共有されるロジックのパッケージです。もしコントローラ間でコピーアンドペーストしたい箇所があった場合、
5-
いくつかの機能をコンポーネントでラップできるかもしれません。
4+
コンポーネントはコントローラ間で共有されるロジックのパッケージです。
5+
CakePHP には、様々な共通のタスクを支援するための素晴らしいコアコンポーネントが用意されています。
6+
あなた独自のコンポーネントも作成できます。もしコントローラ間でコピーアンドペーストしたい箇所が
7+
あった場合、その機能を含むコンポーネントの作成を検討しましょう。コンポーネントを作成することで、
8+
コントローラのコードを綺麗に保ち、プロジェクト間のコードの再利用につながります。
69

7-
また、CakePHPには以下の目的で使える素晴らしいコアコンポーネントが準備されています。:
8-
9-
- セキュリティ
10-
- セッション
11-
- アクセスコントロール
12-
- メール
13-
- クッキー
14-
- 認証
15-
- リクエストハンドリング
16-
- ページ切替
17-
18-
各コアコンポーネントの詳細は各章で説明します。ここでは、独自のコンポーネントを作成する方法を紹介します。
19-
コンポーネントを作成することでコントローラのコードがクリーンな状態に保たれ、プロジェクト間でコードを再利用し易くなります。
10+
各コアコンポーネントの詳細はそれぞれの章で説明します。詳しくは、
11+
:doc:`/core-libraries/toc-components` を参照してください。
12+
ここでは、独自のコンポーネントを作成する方法を紹介します。
2013

2114
.. _configuring-components:
2215

@@ -32,33 +25,44 @@
3225
public $components = array(
3326
'Auth' => array(
3427
'authorize' => array('controller'),
35-
'loginAction' => array('controller' => 'users', 'action' => 'login')
28+
'loginAction' => array(
29+
'controller' => 'users',
30+
'action' => 'login'
31+
)
3632
),
3733
'Cookie' => array('name' => 'CookieMonster')
3834
);
3935

40-
これは ``$components`` 配列でコンポーネントを設定している例です。すべてのコアコンポーネントはこの方法で設定することができます。
41-
さらに、コントローラの ``beforeFilter()`` メソッドで設定することもできます。これは関数の結果をコンポーネントのプロパティに設定する時に役に立ちます。
36+
これは ``$components`` 配列でコンポーネントを設定している例です。
37+
すべてのコアコンポーネントはこの方法で設定することができます。
38+
さらに、コントローラの ``beforeFilter()`` メソッドで設定することもできます。
39+
これは関数の結果をコンポーネントのプロパティに設定する時に役に立ちます。
4240
上記の例は次のように書き換えられます。::
4341

4442
public function beforeFilter() {
4543
$this->Auth->authorize = array('controller');
46-
$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
44+
$this->Auth->loginAction = array(
45+
'controller' => 'users',
46+
'action' => 'login'
47+
);
4748

4849
$this->Cookie->name = 'CookieMonster';
4950
}
5051

51-
しかし、コンポーネントのオプションをコントローラの ``beforeFilter()`` が実行される前に設定することが可能な場合もあります。
52-
つまり、コンポーネントの中には ``$components`` 配列にオプションを設定することができるものがあります。::
52+
しかし、コンポーネントのオプションをコントローラの ``beforeFilter()`` が
53+
実行される前に設定することが可能な場合もあります。
54+
つまり、コンポーネントの中には ``$components`` 配列にオプションを設定することが
55+
できるものがあります。::
5356

5457
public $components = array(
5558
'DebugKit.Toolbar' => array('panels' => array('history', 'session'))
5659
);
5760

5861
各コンポーネントがどのような設定オプションを提供しているかは関連ドキュメントを参照してください。
5962

60-
共通設定の一つに ``className`` オプションがあります。このオプションを使うとコンポーネントに別名をつけられます。
61-
この機能は ``$this->Auth`` や他のコンポーネントの参照を独自実装に置き換えたい時に便利です。::
63+
共通設定の一つに ``className`` オプションがあります。このオプションを使うとコンポーネントに
64+
別名をつけられます。この機能は ``$this->Auth`` や他のコンポーネントの参照を独自実装に
65+
置き換えたい時に便利です。::
6266

6367
// app/Controller/PostsController.php
6468
class PostsController extends AppController {
@@ -72,22 +76,23 @@
7276
// app/Controller/Component/MyAuthComponent.php
7377
App::uses('AuthComponent', 'Controller/Component');
7478
class MyAuthComponent extends AuthComponent {
75-
// コアAuthComponentを上書きするコードを追加して
79+
// コア AuthComponent を上書きするコードを追加して
7680
}
7781

7882
上記の例ではコントローラにて ``MyAuthComponent`` に ``$this->Auth`` という *別名* をつけています。
7983

8084
.. note::
8185

82-
別名を付けられたコンポーネントはコンポーネントが使われるあらゆる場所のインスタンスを置き換えます。これは、他のコンポーネントの内部を含みます。
86+
別名を付けられたコンポーネントはコンポーネントが使われるあらゆる場所のインスタンスを置き換えます。
87+
これは、他のコンポーネントの内部を含みます。
8388

8489
コンポーネントの使用
8590
====================
8691

8792
一旦、コンポーネントをコントローラに読込んでしまえば、使うのは非常に簡単です。
8893
使用中の各コンポーネントはコントローラのプロパティのように見えます。
89-
仮に:php:class:`SessionComponent` と :php:class:`CookieComponent` をコントローラに読込んだ場合、
90-
以下のようにアクセスすることができます。::
94+
もし:php:class:`SessionComponent` と :php:class:`CookieComponent`
95+
コントローラに読込んだ場合、以下のようにアクセスすることができます。::
9196

9297
class PostsController extends AppController {
9398
public $components = array('Session', 'Cookie');
@@ -101,15 +106,15 @@
101106

102107
.. note::
103108

104-
モデルとコンポーネントの両方がコントローラにプロパティとして追加されるので、それらは同じ '名前空間' を共有します。
105-
コンポーネントとモデルに同じ名前をつけないように注意して下さい。
109+
モデルとコンポーネントの両方がコントローラにプロパティとして追加されるので、それらは同じ
110+
'名前空間' を共有します。コンポーネントとモデルに同じ名前をつけないように注意して下さい。
106111

107112
コンポーネントの動的読込み
108113
--------------------------
109114

110115
すべてのコントローラアクションで全コンポーネントを使えるようにする必要はないかもしれません。
111-
このような状況では、実行時に :doc:`コンポーネントコレクション </core-libraries/collections>` を使ってコンポーネントを読込むことができます。
112-
コントローラ内部から以下のようにできます。::
116+
このような状況では、実行時に :doc:`コンポーネントコレクション </core-libraries/collections>`
117+
使ってコンポーネントを読込むことができます。コントローラ内部から以下のようにできます。::
113118

114119
$this->OneTimer = $this->Components->load('OneTimer');
115120
$this->OneTimer->getTime();
@@ -123,16 +128,20 @@
123128
コンポーネントのコールバック
124129
============================
125130

126-
コンポーネントはまた、いくつかのリクエストライフサイクルにリクエストライフサイクルが増すようなコールバックを提供します。
127-
コンポーネントが提供するコンポーネントの詳細については、 :ref:`component-api` の基本を参照して下さい。
131+
コンポーネントはまた、いくつかのリクエストライフサイクルにリクエストライフサイクルが増すような
132+
コールバックを提供します。コンポーネントが提供するコンポーネントの詳細については、
133+
:ref:`component-api` の基本を参照して下さい。
134+
135+
.. _creating-a-component:
128136

129137
コンポーネントを作成する
130138
========================
131139

132140
アプリケーションの様々な箇所で複雑な数学的処理を必要としているオンラインアプリケーションを仮定して下さい。
133141
これから、コントローラの様々な箇所で使うための共有ロジックを集約するためのコンポーネントを作成します。
134142

135-
はじめに、新しいコンポーネントファイルとクラスを作成します。 ``/app/Controller/Component/MathComponent.php`` にファイルを作成して下さい。
143+
はじめに、新しいコンポーネントファイルとクラスを作成します。
144+
``/app/Controller/Component/MathComponent.php`` にファイルを作成して下さい。
136145
コンポーネントの基本構造は以下のようになります。::
137146

138147
App::uses('Component', 'Controller');
@@ -144,23 +153,26 @@
144153

145154
.. note::
146155

147-
すべてのコンポーネントは :php:class:`Component` を継承しなければなりません。継承されていない場合、例外が発生するでしょう。
156+
すべてのコンポーネントは :php:class:`Component` を継承しなければなりません。
157+
継承されていない場合、例外が発生するでしょう。
148158

149159
コントローラの中にコンポーネントを読み込む
150160
------------------------------------------
151161

152-
一旦コンポーネントが完成してしまえば、コントローラの ``$components`` 配列にあるコンポーネント名(Componentの部分を削除する)を置き換えることで使えるようになります。
162+
一旦コンポーネントが完成してしまえば、コントローラの ``$components`` 配列にあるコンポーネント名
163+
(Component の部分を削除する) を置き換えることで使えるようになります。
153164
コントローラはそのコンポーネントに由来する新しいプロパティを自動的に与えられるでしょう。
154165
そのプロパティを通してインスタンスにアクセスできます。::
155166

156-
/* 標準の$this->Sessionと同様に新しいコンポーネントを $this->Math で利用できるようにします。*/
167+
/* 標準の $this->Session と同様に新しいコンポーネントを
168+
$this->Math で利用できるようにします。*/
157169
public $components = array('Math', 'Session');
158170

159-
``AppController`` の中で宣言されているコンポーネントは他のコントローラで宣言されているコンポーネントとマージされます。
160-
同じコンポーネントを二度宣言する必要はありません。
171+
``AppController`` の中で宣言されているコンポーネントは他のコントローラで宣言されているコンポーネントと
172+
マージされます。同じコンポーネントを二度宣言する必要はありません。
161173

162-
コントローラの中でコンポーネントを読み込む時、コンポーネントのコンストラクタに渡すバラメータを宣言することもできます。
163-
このパラメータはコンポーネントによってハンドリングされます。::
174+
コントローラの中でコンポーネントを読み込む時、コンポーネントのコンストラクタに渡すバラメータを
175+
宣言することもできます。このパラメータはコンポーネントによってハンドリングされます。::
164176

165177
public $components = array(
166178
'Math' => array(
@@ -170,8 +182,9 @@
170182
'Session', 'Auth'
171183
);
172184

173-
上記の例ではprecisionとrandomGeneratorを含む配列が ``MathComponent::__construct()`` の第二引数として渡されます。
174-
コンポーネントのパブリックプロパティや引数として渡される設定はその配列に基づいた値になります。
185+
上記の例では precision と randomGenerator を含む配列が ``MathComponent::__construct()`` の
186+
第二引数として渡されます。コンポーネントのパブリックプロパティや引数として渡される設定はその配列に
187+
基づいた値になります。
175188

176189
コンポーネントの中で他のコンポーネントを使用する
177190
------------------------------------------------
@@ -204,7 +217,9 @@
204217
}
205218
}
206219

207-
コントローラから読み込んだコンポーネントと違い、コンポーネントからコンポーネントを読み込んだ場合は、コールバックが呼ばれないことに注意して下さい。
220+
.. note::
221+
コントローラから読み込んだコンポーネントと違い、コンポーネントからコンポーネントを読み込んだ場合は、
222+
コールバックが呼ばれないことに注意して下さい。
208223

209224
.. _component-api:
210225

@@ -213,39 +228,44 @@
213228

214229
.. php:class:: Component
215230
216-
コンポーネントの基底クラスは :php:class:`ComponentCollection` を通して共通のハンドリング設定を扱うように他のコンポーネントを遅延読み込みするためのメソッドをいくつか提供しています。
231+
コンポーネントの基底クラスは :php:class:`ComponentCollection` を通して共通のハンドリング設定を
232+
扱うように他のコンポーネントを遅延読み込みするためのメソッドをいくつか提供しています。
217233
また、コンポーネントのすべてのコールバックのプロトタイプを提供します。
218234

219235
.. php:method:: __construct(ComponentCollection $collection, $settings = array())
220236
221-
基底コンポーネントクラスのコンストラクタです。すべての ``$settings`` 、またはパブリックプロパティは ``$settings`` の中で一致した値に変更されます。
237+
基底コンポーネントクラスのコンストラクタです。すべての ``$settings`` 、
238+
またはパブリックプロパティは ``$settings`` の中で一致した値に変更されます。
222239

223240
コールバック
224241
------------
225242

226243
.. php:method:: initialize(Controller $controller)
227244
228-
initializeメソッドはコントローラの beforeFilter の前に呼び出されます
245+
コントローラの beforeFilter メソッドの前に呼び出されます
229246

230247
.. php:method:: startup(Controller $controller)
231248
232-
startupメソッドはコントローラのbeforeFilterの後、コントローラの現在のアクションハンドラの前に呼び出されます。
249+
コントローラの beforeFilter メソッドの後、コントローラの現在のアクションハンドラの前に
250+
呼び出されます。
233251

234252
.. php:method:: beforeRender(Controller $controller)
235253
236-
beforeRenderメソッドはコントローラが要求されたアクションのロジックを実行した後で、ビューとレイアウトが描画される前に呼び出されます。
254+
コントローラが要求されたアクションのロジックを実行した後、
255+
ビューとレイアウトが描画される前に呼び出されます。
237256

238257
.. php:method:: shutdown(Controller $controller)
239258
240-
shutdownメソッドは出力結果がブラウザに送信される前に呼び出されます
259+
出力結果がブラウザに送信される前に呼び出されます
241260

242261
.. php:method:: beforeRedirect(Controller $controller, $url, $status=null, $exit=true)
243262
244-
beforeRedirectメソッドはコントローラのredirectメソッドが呼び出され時に、他のアクションより先に呼びだされます。
245-
このメソッドがfalseを返す時、コントローラはリクエストのリダイレクトを中断します。
263+
コントローラの redirect メソッドが呼び出された時に、他のアクションより先に呼びだされます。
264+
このメソッドが false を返す時、コントローラはリクエストのリダイレクトを中断します。
246265
$url, $status と $exit 変数はコントローラのメソッドの場合と同じ意味です。また、
247-
リダイレクト先のURL文字列を返すか、'url'と'status'と'exit'をキーに持つ連想配列を返すことができます。
248-
'status'と'exit'は任意です。
266+
リダイレクト先の URL 文字列を返すか、 'url' と 'status' と 'exit' をキーに持つ連想配列を
267+
返すことができます。 'status' と 'exit' は任意です。
268+
249269

250270
.. meta::
251271
:title lang=ja: Components

0 commit comments

Comments
 (0)
Please sign in to comment.