ホームページ バックエンド開発 PHPチュートリアル CakePHP 2.x CookBook 中国語版 第 5 章 コントローラーコンポーネント_PHP チュートリアル

CakePHP 2.x CookBook 中国語版 第 5 章 コントローラーコンポーネント_PHP チュートリアル

Jul 14, 2016 am 10:08 AM
cakephp 中国バージョン 共有 複数 コントローラ コンポーネント

コンポーネント

コンポーネントは、複数のコントローラー間で共有されるロジックのパッケージです。コントローラー間で何かをコピー&ペーストしている場合は、一部の機能をコンポーネントにラップすることを検討する必要があります。
CakePHP には、便利なコアコンポーネントの美しいセットも付属しています:
セキュリティ
セッション
アクセス制御リスト
メール
クッキー
認証
リクエストの処理
ページネーション
これらのコンポーネントの詳細は、それぞれの章に記載されています。 次に、独自のコンポーネントを構築する方法を説明します。 コンポーネントを作成すると、コントローラー コードがクリーンな状態に保たれ、複数のプロジェクトでコードを再利用できるようになります。
構成コンポーネント
一部のコアコンポーネントを設定する必要があります。構成する必要があるコンポーネントには、認証、Cookie、および電子メール コンポーネントが含まれます。 一般的なコンポーネントの場合、通常は $components 配列またはコントローラーの beforeFilter メソッドで構成されます。
1 クラス PostsController は AppController を拡張します {
2 public $components = array(
3 '認証' => array(
4 'authorize' => array('controller'),
5 'loginAction' => array('controller' => 'users', 'action' => 'ログイン')
6)、
7 'Cookie' => array('name' => 'CookieMonster')
8);
これは、$components 配列を使用してコンポーネントを構成する例です。すべてのコア コンポーネントでこの方法で構成できます。さらに、コントローラーの beforeFilter() メソッドでコンポーネントを構成できます。 このアプローチは通常、関数の結果をコンポーネントのプロパティに割り当てる必要がある場合に使用されます。上記の例は次のように表すこともできます:
1 パブリック関数 beforeFilter() {
2 $this->Auth->authorize = array('controller');
3 $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
4
5 $this->Cookie->name = 'CookieMonster';
6 }
ただし、コントローラーの beforeFilter() を実行する前に、コンポーネントの特定の構成オプションを設定する必要がある場合もあります。 最後に、一部のコンポーネントでは $components 配列で構成オプションを設定できます:
1 public $components = array(
2 'DebugKit.Toolbar' => array('panels' => array('history', 'session'))
3);
関連ドキュメントを参照することで、各コンポーネントでどのような構成オプションが提供されているかを確認できます。
className は、コンポーネントにエイリアスを与えることができるパブリック設定オプションです。このオプションは、$this->Auth または他のパブリック コンポーネントをカスタム実装に置き換える場合に便利です。
1 // app/Controller/PostsController.php
2 クラス PostsController は AppController を拡張します {
3 つのパブリック $components = array(
4 '認証' => array(
5 'className' => 'MyAuth'
6)
7 );
8 }
9
10 // app/Controller/Component/MyAuthComponent.php
11 App::uses('AuthComponent', 'コントローラー/コンポーネント');
12 クラス MyAuthComponent extends AuthComponent {
13 // コードを追加してコア AuthComponent をオーバーライドします
14 }
上記の例のコントローラーの $this->Auth のエイリアスは MyAuthComponent です。
メモ
エイリアスを持つコンポーネントを使用する場合は、他のコンポーネントでの参照も含めて、エイリアスを使用する必要があります。
コンポーネントを使用する
コントローラーにいくつかのコンポーネントを含めると、使用は非常に簡単です。コントローラー内の各要素は属性として使用されます。コントローラーに SessionComponent と CookieComponent をロードしている場合は、次のようにアクセスできます:
1 クラス PostsController は AppController を拡張します {
2 public $components = array('Session', 'Cookie');
3
4 パブリック関数 delete() {
5 if ($this->Post->delete($this->request->data('Post.id')) {
6 $this->Session->setFlash('投稿は削除されました。');
7 $this->redirect(array('action' => 'index'));
8 }
9 }
メモ
属性としてコントローラーに追加されたモデルとコンポーネントは同じ「名前空間」を共有するため、コンポーネントとモデルに同じ名前を付けないように注意する必要があります。
実行時にコンポーネントをロードする
すべてのコンポーネントをすべてのコントローラー メソッドで使用できる必要はない場合があります。 この場合、コンポーネント コレクションを使用して、実行時にコンポーネントをロードできます。 コントローラー内では次のように実行できます:
1 $this->OneTimer = $this->Components->load('OneTimer');
2 $this->OneTimer->getTime();
コンポーネントコールバック
コンポーネントは、リクエスト サイクルを延長できるようにするいくつかのリクエスト ライフサイクル コールバックも提供します。 コンポーネントによって提供されるコールバックの詳細については、「コンポーネント API」を参照してください。
コンポーネントを作成する
オンライン アプリケーションのさまざまな部分で複雑な数学的演算を実行する必要があるとします。いくつかの異なるコントローラーで使用するために、この共有ロジックをラップするコンポーネントを作成できます。
最初のステップは、新しいコンポーネント ファイルとクラスです。作成されるファイルは/app/Controller/Component/MathComponent.phpです。その基本構造は次のとおりです:
1 アプリ::uses('コンポーネント', 'コントローラー');
2 クラス MathComponent はコンポーネント {
を拡張します
3 パブリック関数 doComplexOperation($amount1, $amount2) {
4 $amount1 + $amount2を返します;
5 }
6 }
メモ
すべてのコンポーネントはコンポーネントを継承する必要があります。それ以外の場合は例外がスローされます。
コントローラーにコンポーネントを含める
コンポーネントが完成したら、コンポーネント名をコントローラーの $components 配列に入れることで、アプリケーション コントローラーで使用できます (「コンポーネント」セクションを参照)。コントローラーは、コンポーネントにちなんで名付けられた新しいプロパティを自動的に提供し、それを通じてコン​​ポーネントのインスタンスにアクセスできます。
1 /* 新しいコンポーネント変数を生成 $this->Math
2 と標準の $this->セッション */
3 public $components = array('Math', 'Session');
AppController で定義されたコンポーネントは、他のコントローラーのコンポーネントとマージされます。したがって、同じコンポーネントを 2 回定義する必要はありません。
コントローラーにコンポーネントを含める場合、コンポーネントのコンストラクターに渡すパラメーターのセットを定義することもできます。これらのパラメータはコンポーネントによって処理されます:
1 public $components = array(
2 '数学' => 配列(
3 '精度' => 2,
4 'randomGenerator' => 'srand'
5)、
6「セッション」、「認証」
7);
このコードは、precision とrandomGenerator を含む配列を 2 番目のパラメーターとして MathComponent::__construct() に渡します。慣例により、コンポーネントに渡されるパブリック プロパティもこの設定に基づく値を持ちます。
コンポーネント内で他のコンポーネントを使用する
場合によっては、コンポーネントは他のコンポーネントも使用する必要があります。この場合、コントローラーにコンポーネントを含めるのと同じ方法で、`$components` 変数を使用して、あるコンポーネントを別のコンポーネント内に含めることができます。
1 // アプリ/コントローラー/コンポーネント/CustomComponent.php
2 App::uses('コンポーネント', 'コントローラー');
3 クラス CustomComponent はコンポーネント {
を拡張します
4 // コンポーネントが使用する他のコンポーネント
5 public $components = array('Existing');
6
7 パブリック関数Initialize(Controller $controller) {
8 $this->既存->foo();
9 }
10
11 パブリック関数 bar() {
12 // ...
13 }
14 }
15
16 // アプリ/コントローラー/コンポーネント/ExistingComponent.php
17 アプリ::uses('コンポーネント', 'コントローラー');
18 クラス ExistingComponent はコンポーネント {
を拡張します
19
20 パブリック関数 foo() {
21 // ...
22 }
23 }
コンポーネントAPI
クラスコンポーネント
コンポーネントの基本クラスは、ComponentCollection を通じて他のコンポーネントを遅延ロードし、パブリック設定を処理するためのメソッドをいくつか提供します。また、すべてのコンポーネント コールバックのプロパティも提供します。
Component::__construct(ComponentCollection $collection, $settings = array())
コンポーネントの基本クラスのコンストラクター。パブリック プロパティであるすべての $settings も、 settings 内で設定された値と一致する値を持ちます。
コールバック www.2cto.com
コンポーネント::初期化(コントローラー $コントローラー)
initialize メソッドは、コントローラーの beforeFilter メソッドの前に呼び出されます。
コンポーネント::startup(コントローラー $controller)
startup メソッドは、コントローラーの beforeFilter の後、コントローラーが現在のアクション処理を実行する前に呼び出されます。
コンポーネント::beforeRender(コントローラー $コントローラー)
beforeRender メソッドは、リクエスト アクション ロジックの実行後、コントローラーがビューとレイアウトをレンダリングする前に呼び出されます。
コンポーネント::shutdown(コントローラー $controller)
shutdown メソッドは、出力がブラウザーに送信される前に呼び出されます。
Component::beforeRedirect(コントローラー $controller, $url, $status=null, $exit=true)
beforeRedirect メソッドは、コントローラーのジャンプ メソッドが呼び出された後、他のすべてのメソッドが呼び出される前に呼び出されます。このメソッドが false を返した場合、要求されたリダイレクトは完了しません。 $url、$status、および $exit 変数は、コントローラー メソッドに対して同じ意味を持ちます。リダイレクト先の URL として文字列を返すことも、「status」要素と「exit」要素がオプションである「url」キーを含む連想配列を返すこともできます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/477792.html技術記事コンポーネント コンポーネントは、複数のコントローラ間で共有されるロジックのパッケージです。コントローラー間で何かをコピーアンドペーストしていることに気付いた場合は、一部の機能をコンポーネントにラップすることを検討する必要があります...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

壁紙エンジンを友達と共有する方法 壁紙エンジンを友達と共有する方法 Mar 18, 2024 pm 10:00 PM

ユーザーは、WallpaperEngine を使用する際に、入手した壁紙を友人と共有することができますが、多くのユーザーは、WallpaperEngine を友人と共有する方法を知りませんが、お気に入りの壁紙をローカルに保存し、ソーシャル ソフトウェアを通じて友人と共有することができます。壁紙エンジンを友達と共有する方法 答え: ローカルに保存して友達と共有します。 1. お気に入りの壁紙をローカルに保存し、ソーシャル ソフトウェアを通じて友人と共有することをお勧めします。 2. フォルダー経由でコンピューターにアップロードし、コンピューターのクリエイティブ ワークショップ機能を使用して [共有] をクリックすることもできます。 3. コンピュータでWallpaperengineを使用し、クリエイティブワークショップのオプションバーを開き、

WeChat Enterpriseで画面を共有する方法 WeChat Enterpriseで画面を共有する方法 Feb 28, 2024 pm 12:43 PM

企業専用の WeChat を使用する企業が増えています。これにより、企業と顧客およびパートナー間のコミュニケーションが容易になるだけでなく、作業効率も大幅に向上します。エンタープライズ WeChat は機能が豊富で、その中でも画面共有機能は非常に人気があります。会議中、画面を共有することで、参加者はより直感的にコンテンツを表示し、より効率的に共同作業を行うことができます。それでは、WeChat Enterprise で効率的に画面を共有する方法をまだ知らないユーザーのために、このチュートリアル ガイドで詳しく説明します。 WeChat Enterprise で画面を共有するにはどうすればよいですか? 1. Enterprise WeChat のメインインターフェイスの左側の青い領域に機能のリストが表示され、「会議」アイコンが表示され、クリックして入力すると、3 つの会議モードが表示されます。

GIGABYTE マザーボードでキーボード ブート機能を設定する方法 (GIGABYTE マザーボードでキーボード ブート モードを有効にする) GIGABYTE マザーボードでキーボード ブート機能を設定する方法 (GIGABYTE マザーボードでキーボード ブート モードを有効にする) Dec 31, 2023 pm 05:15 PM

Gigabyte のマザーボードでキーボード起動を設定する方法 まず、キーボード起動をサポートする必要がある場合は、PS2 キーボードである必要があります。 !設定手順は次のとおりです: ステップ 1: 起動後に Del または F2 を押して BIOS に入り、BIOS の Advanced (Advanced) モードに移動します 通常のマザーボードは、デフォルトでマザーボードの EZ (Easy) モードに入ります。 F7 を押してアドバンスト モードに切り替える必要があります。ROG シリーズ マザーボードはデフォルトで BIOS に入ります。アドバンスト モード (説明には簡体字中国語を使用します) ステップ 2: - [アドバンスト] - [アドバンスト パワー マネージメント (APM)] を選択します。 ステップ 3 : オプション [PS2 キーボードによるウェイクアップ] を見つけます ステップ 4: このオプション デフォルトは無効です プルダウンすると、3 つの異なる設定オプションが表示されます: [スペースバー] を押してコンピューターの電源をオンにし、グループを押します

Windows 10 旧バージョンコンポーネント DirectPlay のインストール方法 Windows 10 旧バージョンコンポーネント DirectPlay のインストール方法 Dec 28, 2023 pm 03:43 PM

win10で一部のゲームをプレイすると、画面がフリーズしたり画面がぼやけるなどの不具合が多くのユーザーに発生しますが、現時点ではダイレクトプレイ機能をオンにすることで問題を解決でき、機能の操作方法も非常に簡単です。 win10 の古いコンポーネントである Directplay をインストールする方法 1. 検索ボックスに「コントロール パネル」と入力して開きます 2. 表示方法として大きなアイコンを選択します 3. 「プログラムと機能」を見つけます 4. 左側をクリックして有効にするか、 Win 機能をオフにする 5. ここで古いバージョンを選択します チェックボックスをオンにするだけです

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CS プレーヤーの第一選択: 推奨されるコンピューター構成 CS プレーヤーの第一選択: 推奨されるコンピューター構成 Jan 02, 2024 pm 04:26 PM

1. プロセッサ コンピュータ構成を選択する場合、プロセッサは最も重要なコンポーネントの 1 つです。 CS などのゲームをプレイする場合、プロセッサーのパフォーマンスはゲームのスムーズさや応答速度に直接影響します。 Intel Core i5 または i7 シリーズ プロセッサを選択することをお勧めします。これらのプロセッサは、強力なマルチコア処理能力と高周波数を備え、CS の高い要件に簡単に対応できるためです。 2. グラフィックス カード グラフィックス カードは、ゲームのパフォーマンスを左右する重要な要素の 1 つです。 CSなどのシューティングゲームでは、グラフィックカードの性能がゲーム画面の鮮明さや滑らかさに直結します。優れたグラフィックス処理能力と高いフレームレート出力を備え、より優れたゲーム体験を提供できる NVIDIA GeForce GTX シリーズまたは AMD Radeon RX シリーズ グラフィックス カードを選択することをお勧めします。

Windows 11 フォルダー共有ガイド: ファイルとデータを簡単に共有する Windows 11 フォルダー共有ガイド: ファイルとデータを簡単に共有する Mar 13, 2024 am 11:49 AM

日常生活や仕事では、異なるデバイス間でファイルやフォルダーを共有する必要があることがよくあります。 Windows 11 システムには便利なフォルダー共有機能が組み込まれており、個人ファイルのプライバシーを保護しながら、同じネットワーク内の他のユーザーと必要なコンテンツを簡単かつ安全に共有できます。この機能により、個人情報の漏洩を心配することなく、ファイル共有が簡単かつ効率的になります。 Windows 11 システムのフォルダー共有機能を通じて、共同作業、通信、コラボレーションがより便利になり、仕事の効率と生活の利便性が向上します。共有フォルダーを正常に構成するには、まず次の条件を満たす必要があります。 (共有に参加している) すべてのデバイスが同じネットワークに接続されている。ネットワーク探索を有効にし、共有を設定します。ターゲットデバイスを知る

See all articles