検索
ホームページバックエンド開発PHPチュートリアルZend Framework チュートリアル: 応答オブジェクト Zend_Controller_Response インスタンスのカプセル化の詳細な説明、controllerresponse_PHP チュートリアル

Zend Framework チュートリアルの応答オブジェクトのカプセル化 Zend_Controller_Response インスタンス、controllerresponse の詳細な説明

この記事では、Zend Framework チュートリアルの応答オブジェクトのカプセル化 Zend_Controller_Response の使用法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

概要

応答オブジェクトは論理的には要求オブジェクトのパートナーであり、その目的はメッセージ本文やメッセージ ヘッダーを収集することであるため、多数の結果を返すことができます。

Zend_Controller_Response 応答オブジェクトの基本実装

§── 返信
│ §── Abstract.php
│ §── Cli.php
│ §── Exception.php
│ §── http.php
│ └── HttpTestCase.php

Zend_Controller_Response_Abstract

リーリー

Zend_Controller_Response_Http

リーリー

一般的な使い方

メッセージヘッダーを含む応答出力を送信したい場合は、sendResponse()を使用します。

リーリー

注: デフォルトでは、フロント コントローラーはディスパッチ リクエストの完了後に sendResponse() を呼び出します。これを呼び出す必要はありません。ただし、応答を処理したり、テストに使用したりする場合は、 Zend_Controller_Front::returnResponse(true) を使用して returnResponse フラグを設定することで、デフォルトの動作をオーバーライドできます。 リーリー

アクションコントローラーで応答オブジェクトを使用します。出力を直接レンダリングしてメッセージ ヘッダーを送信する代わりに、結果を応答オブジェクトに書き込みます。

リーリー

これにより、コンテンツを表示する前にすべてのメッセージを一度に送信できます。

注: アクション コントローラーのビュー統合を使用する場合、対応するオブジェクトでレンダリング ビュー スクリプトを設定する必要はありません。これは Zend_Controller_Action::render() がデフォルトで行うためです。

プログラム内で例外が発生した場合は、応答オブジェクトのisException()フラグを確認し、getException()を使用して例外を取得します。さらに、エラー ページにリダイレクトしたり、例外メッセージをログに記録したり、例外メッセージを美しくフォーマットしたりするカスタム応答オブジェクトを作成することもできます。

応答オブジェクトは、フロントエンド コントローラーがdispatch()を実行した後、またはフロントエンド コントローラーが出力をレンダリングする代わりに応答オブジェクトを返すように要求された後に取得できます。

リーリー

デフォルトでは、例外メッセージは表示されません。デフォルト設定は、renderExceptions() を呼び出すことでオーバーライドできます。または、フロントコントローラーの throwExceptions() を有効にします:

リーリー

メッセージヘッダーを処理しています

上で述べたように、応答オブジェクトの重要な役割の 1 つは HTTP 応答ヘッダーを収集して送信することであり、それに応じて多数のメソッドがあります:

canSendHeaders() は、メッセージ ヘッダーが送信されたかどうかを判断するために使用されます。このメソッドには、メッセージ ヘッダーの送信時に例外をスローするかどうかを示すオプションのフラグがあります。デフォルト設定は、headersSentThrowsException プロパティを false に設定することでオーバーライドできます。

setHeader($name, $value, $replace = false) は、個々のメッセージ ヘッダーを設定するために使用されます。デフォルトでは、同じ名前の既存のメッセージ ヘッダーは置換されませんが、$replace を true に設定すると置換を強制できます。
メッセージ ヘッダーを設定する前に、このメソッドはまず canSendHeaders() をチェックして操作が許可されているかどうかを確認し、例外のスローを要求します。
setRedirect($url, $code = 302) は、リダイレクトの準備として HTTP ポジショニング ヘッダーを設定します。HTTP ステータス コードが指定されている場合、リダイレクトではそのステータス コードが使用されます。
これは内部で setHeader() を呼び出し、$replace フラグをオンにして、位置決めメッセージ ヘッダーが 1 回だけ送信されるようにします。
getHeaders() はメッセージ ヘッダーの配列を返します。各要素は「name」キーと「value」キーを持つ配列です。
clearHeaders() は、登録されているすべてのキーと値のメッセージ ヘッダーをクリアします。
setRawHeader() は、HTTP ステータス メッセージ ヘッダーなど、キーと値のペアを含まない生のメッセージ ヘッダーを設定します。
getRawHeaders() は、登録されているすべての生のメッセージ ヘッダーを返します。
clearRawHeaders() は、生のメッセージ ヘッダーをすべてクリアします。
clearAllHeaders() は、元のメッセージ ヘッダーとキーと値のメッセージ ヘッダーを含むすべてのメッセージ ヘッダーをクリアします。

上記のメソッドに加えて、現在のリクエストの HTTP 応答コードを取得および設定するためのアクセサー、setHttpResponseCode() および getHttpResponseCode() もあります。

名前付きスニペット

対応するオブジェクトは「名前付きフラグメント」をサポートします。メッセージ本文をさまざまなフラグメントに分割し、特定の順序で並べることができます。したがって、出力は特定の順序で返されます。内部的には、本文の内容は配列として保存され、多数のアクセサー メソッドを使用して配列内の位置と名前を示すことができます。

たとえば、preDispatch() フックを使用してヘッダーを応答オブジェクトに追加し、次に本文のコンテンツをアクション コントローラーに追加し、最後にフッターを postDispatch() フックに追加できます。

リーリー

上記の例では、/my/foo を呼び出すと、最終的な応答オブジェクトのコンテンツは次の構造になります。 リーリー

応答をレンダリングするとき、配列内の要素の順序でレンダリングされます。

名前付きフラグメントを処理するために多数のメソッドを使用できます:

setBody() と appendBody() はどちらも、名前付きフラグメントを示す $name パラメーターを渡すことができます。この引数を指定すると、指定された名前付きフラグメントが存在しない場合は上書きされて作成されます。 $name パラメータが setBody() に渡されない場合、本文の内容全体がリセットされます。 $name 引数が appendBody() に渡されない場合、コンテンツは「デフォルト」の名前付きフラグメントに追加されます。
prepend($name, $content) は、$name という名前のフラグメントを作成し、配列の先頭に配置します。フラグメントが存在する場合は、それが最初に削除されます。
append($name, $content) は、$name という名前のフラグメントを作成し、配列の最後に配置します。 フラグメントが存在する場合は、それが最初に削除されます。
insert($name, $content, $parent = null, $before = false) は、$name という名前のフラグメントを作成します。 $parent パラメータが指定されている場合、新しいフラグメントは $before の値に応じて
に配置されます。 $parentの前または後。フラグメントが存在する場合は、それが最初に削除されます。
clearBody($name = null) $name パラメータが指定されている場合はフラグメントが削除され、そうでない場合はすべて削除されます。
getBody($spec = false) $spec パラメータがフラグメント名の場合、フィールドが取得されます。 $spec パラメータが false の場合、文字列形式の名前付きフラグメントの連続したチェーンが返されます。 $spec パラメータが true の場合、本文のコンテンツ配列を返します。

応答オブジェクトの例外をテストする

上記の通り、デフォルトでは配信処理中の例外はレスポンスオブジェクトに登録されます。例外はヒープに登録されるため、プログラム例外、ディスパッチ例外、プラグイン例外など、すべての例外をスローできます。特定の例外を確認またはログに記録したい場合は、応答オブジェクトの例外 API を使用するとよいでしょう:

setException(Exception $e) 例外を登録します。
isException() は、例外が登録されているかどうかを判断します。
getException() は例外ヒープ全体を返します。
hasExceptionOfType($type) は、特定のクラスの例外がヒープ内にあるかどうかを判断します。
hasExceptionOfMessage($message) は、指定されたメッセージを伴う例外がヒープ内にあるかどうかを判断します。
hasExceptionOfCode($code) は、指定されたコードの例外がヒープ内にあるかどうかを判断します。
getExceptionByType($type) ヒープ内の特定のクラスのすべての例外を取得します。そうでない場合は false を返し、それ以外の場合は配列を返します。
getExceptionByMessage($message) 特定のメッセージを含むヒープ内のすべての例外を取得します。そうでない場合は false を返し、それ以外の場合は配列を返します。
getExceptionByCode($code) 特定のコードを持つヒープ内のすべての例外を取得します。そうでない場合は false を返し、それ以外の場合は配列を返します。
renderExceptions($flag) 応答の送信時に、応答内の例外を送信する必要があるかどうかを示すフラグを設定します。

カスタム応答オブジェクト

応答オブジェクトの目的は、まず、多数のアクションやプラグインからメッセージ ヘッダーとコンテンツを収集し、それらをクライアントに返すことです。次に、応答オブジェクトは、これらを処理または返すために発生する例外も収集します。例外を非表示にするか、エンド ユーザーから例外を非表示にします。

レスポンスの基本クラスは Zend_Controller_Response_Abstract であり、作成されたサブクラスはこのクラスまたはその派生クラスを継承する必要があります。利用可能な多数の方法が前の章でリストされています。

応答オブジェクトをカスタマイズする理由には、返されたコンテンツの出力方法をリクエスト環境に基づいて変更すること (例: CLI および PHP-GTK リクエストでヘッダーを送信しない)、名前付きフラグメントに格納されているコンテンツの最終ビューを返す機能の追加が含まれます。もっと。

より zend 関連のコンテンツに興味のある読者は、このサイトの特別トピックをチェックしてください: 「Zend FrameWork フレームワーク入門チュートリアル」、「php 優れた開発フレームワークの概要」、「Yii フレームワークの紹介と一般的なテクニックの概要」、「ThinkPHP」入門チュートリアル』『PHPオブジェクト指向プログラミング入門チュートリアル』『php+mysqlデータベース操作入門チュートリアル』『php共通データベース操作スキルまとめ』

この記事が PHP プログラミングのすべての人に役立つことを願っています。

興味があるかもしれない記事:

  • Zend Framework チュートリアルでのオートロードの使用方法の詳細な説明
  • Zend Framework チュートリアルでのリソースのオートロードの使用例
  • Zend Framework チュートリアルでの MVC フレームワークのコントローラーの使用状況の分析
  • Zend Framework チュートリアルのロードの説明関数別の詳細 Zend_Controller_Router
  • Zend フレームワーク チュートリアル Zend_Controller_Plugin プラグインの詳細な説明
  • Zend フレームワーク チュートリアル リクエスト オブジェクトのカプセル化の詳細な説明 Zend_Controller_Request サンプル
  • Zend フレームワーク チュートリアル アクション ベース クラス Zend_Controller_Action の詳細な説明
  • Zend フレームワークのチュートリアルディスパッチャ Zend_Controller_Dispatcher の詳細な説明
  • Zend Framework チュートリアルでのフロントエンド コントローラー Zend_Controller_Front の使用法の詳細な説明
  • Zend Framework チュートリアルでのビュー コンポーネント Zend_View の使用法の詳細な説明
  • の使用法の詳細な説明Zend Framework チュートリアルのローダーとプラグインローダー

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1106891.html技術記事 Zend Framework チュートリアルの応答オブジェクトのカプセル化の詳細な説明 Zend_Controller_Response の例、controllerresponse この記事では、Zend Framework チュートリアルの応答オブジェクトのカプセル化 Zend_Controll...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPおよびPython:さまざまなパラダイムが説明されていますPHPおよびPython:さまざまなパラダイムが説明されていますApr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPython:彼らの歴史を深く掘り下げますPHPとPython:彼らの歴史を深く掘り下げますApr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPとPythonの選択:ガイドPHPとPythonの選択:ガイドApr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPとフレームワーク:言語の近代化PHPとフレームワーク:言語の近代化Apr 18, 2025 am 12:14 AM

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

PHPの影響:Web開発などPHPの影響:Web開発などApr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?Apr 17, 2025 am 12:24 AM

PHPでは、クローンキーワードを使用してオブジェクトのコピーを作成し、\ _ \ _クローンマジックメソッドを使用してクローン動作をカスタマイズします。 1.クローンキーワードを使用して浅いコピーを作成し、オブジェクトのプロパティをクローン化しますが、オブジェクトのプロパティはクローニングしません。 2。\ _ \ _クローン法は、浅いコピーの問題を避けるために、ネストされたオブジェクトを深くコピーできます。 3.クローニングにおける円形の参照とパフォーマンスの問題を避けるために注意し、クローニング操作を最適化して効率を向上させます。

PHP対Python:ユースケースとアプリケーションPHP対Python:ユースケースとアプリケーションApr 17, 2025 am 12:23 AM

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。