この記事では、主に Zend Framework アクション アシスタント (Zend_Controller_Action_Helper) の使用法を紹介し、アクション アシスタント Zend_Controller_Action_Helper の機能、定義、使用法、および関連する実装コードを詳細に分析します。必要な方は、次の
を参照してください。この記事の例 Zend Framework アクション ヘルパー (Zend_Controller_Action_Helper) の使用法を学習しました。参考のために皆さんと共有してください。詳細は次のとおりです。
アシスタント モードを通じて、頻繁に使用されるいくつかの機能モジュールをカプセル化できるため、主にアクション内で必要に応じて柔軟に使用できます。
Zend Framework には、アクション アシスタント (Zend_Controller_Action_Helper) とビュー アシスタント (Zend_View_Helper) の 2 種類のヘルパーがあります。
アクション アシスタントは、Zend_Controller_Action の派生アクション コントローラーに関数 (ランタイム機能やオンデマンド機能) を即座に追加できるため、パブリック アクション コントローラー関数を追加するときに、派生アクション コントロールの Device クラスを最小化できます。必要です。
アクション ヘルパーは、呼び出す必要があるときにロードされ、要求されたとき (ブートストラップ)、またはアクション コントローラーの作成されたとき (init()) にインスタンス化できます。
関連ファイル
/library/Zend/Controller/Action/
│ Exception.php
│ HelperBroker.php
│ インターフェイス .php
│
§─Helper
│ │ Abstract.php
│ │ ActionStack.php
│ │ AjaxContext.php
│ │ AutoCompleteDojo.php
│ │ AutoCompleteScriptaculous .php
│ │ Cache.php
│ │ ContextSwitch.php
│ │ FlashMessenger.php
│ │ Json.php
│ │ Redirector.php
│ │ Url.php
│ │ ViewRenderer.php
│ │
│ └ ─ オートコンプリート
│ Abstract.php
│
─ Heelperbroker
PriorityStack.php
##一般的なアクション アシスタントは次のとおりです。
:
FlashMessenger は、Flash Messenger セッションの処理に使用されます。
Json は、JSON 応答のデコードと送信に使用されます。
Url は URL の作成に使用されます。
Redirector プログラムが内部ページまたは外部ページにリダイレクトするのに役立つ別の実装メソッドを提供します。##ViewRenderer は、コントローラー内でビュー オブジェクトを確立し、ビューをレンダリングするプロセスを自動的に完了します。 ##AutoComplete は、AJAX の自動完了に自動的に応答します。
ContextSwitch と AjaxContext は、アクションの代替応答形式を提供します。
いくつかの実践的なインスタンス化メソッド
1. Zend_Controller_Action
の $_helper メンバーの getHelper() メソッドを使用します。 getHelper() を直接呼び出して、ヘルパーの名前を渡すだけです。$redirector = $this->_helper->getHelper('Redirector'); //$redirector->getName(); $redirector->gotoSimple('index2');
2. _helper アシスタントの属性に対応するヘルパー オブジェクト
に直接アクセスします。$redirector = $this->_helper->Redirector;Zend_Controller_Action_HelperBroker中国語の名前は「アシスタント ブローカー」と翻訳され、その名前が示すように、アクション アシスタントの仲介者です。 。 アクションをインスタンス化する 2 番目の方法は、Zend_Controller_Action_HelperBroker のマジック メソッド __get() を使用する方法です。 アシスタント ブローカーは、アシスタント オブジェクトとアシスタント パスを登録し、アシスタントやその他の機能を取得するために使用されます。 Zend_Controller_Action_HelperBroker の実装と共通メソッドのリスト
<?php /** * @see Zend_Controller_Action_HelperBroker_PriorityStack */ require_once 'Zend/Controller/Action/HelperBroker/PriorityStack.php'; /** * @see Zend_Loader */ require_once 'Zend/Loader.php'; /** * @category Zend * @package Zend_Controller * @subpackage Zend_Controller_Action * @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ class Zend_Controller_Action_HelperBroker { /** * $_actionController - ActionController reference * * @var Zend_Controller_Action */ protected $_actionController; /** * @var Zend_Loader_PluginLoader_Interface */ protected static $_pluginLoader; /** * $_helpers - Helper array * * @var Zend_Controller_Action_HelperBroker_PriorityStack */ protected static $_stack = null; /** * Set PluginLoader for use with broker * * @param Zend_Loader_PluginLoader_Interface $loader * @return void */ public static function setPluginLoader($loader) { if ((null !== $loader) && (!$loader instanceof Zend_Loader_PluginLoader_Interface)) { require_once 'Zend/Controller/Action/Exception.php'; throw new Zend_Controller_Action_Exception('Invalid plugin loader provided to HelperBroker'); } self::$_pluginLoader = $loader; } /** * Retrieve PluginLoader * * @return Zend_Loader_PluginLoader */ public static function getPluginLoader() { if (null === self::$_pluginLoader) { require_once 'Zend/Loader/PluginLoader.php'; self::$_pluginLoader = new Zend_Loader_PluginLoader(array( 'Zend_Controller_Action_Helper' => 'Zend/Controller/Action/Helper/', )); } return self::$_pluginLoader; } /** * addPrefix() - Add repository of helpers by prefix * * @param string $prefix */ static public function addPrefix($prefix) { $prefix = rtrim($prefix, '_'); $path = str_replace('_', DIRECTORY_SEPARATOR, $prefix); self::getPluginLoader()->addPrefixPath($prefix, $path); } /** * addPath() - Add path to repositories where Action_Helpers could be found. * * @param string $path * @param string $prefix Optional; defaults to 'Zend_Controller_Action_Helper' * @return void */ static public function addPath($path, $prefix = 'Zend_Controller_Action_Helper') { self::getPluginLoader()->addPrefixPath($prefix, $path); } /** * addHelper() - Add helper objects * * @param Zend_Controller_Action_Helper_Abstract $helper * @return void */ static public function addHelper(Zend_Controller_Action_Helper_Abstract $helper) { self::getStack()->push($helper); return; } /** * resetHelpers() * * @return void */ static public function resetHelpers() { self::$_stack = null; return; } /** * Retrieve or initialize a helper statically * * Retrieves a helper object statically, loading on-demand if the helper * does not already exist in the stack. Always returns a helper, unless * the helper class cannot be found. * * @param string $name * @return Zend_Controller_Action_Helper_Abstract */ public static function getStaticHelper($name) { $name = self::_normalizeHelperName($name); $stack = self::getStack(); if (!isset($stack->{$name})) { self::_loadHelper($name); } return $stack->{$name}; } /** * getExistingHelper() - get helper by name * * Static method to retrieve helper object. Only retrieves helpers already * initialized with the broker (either via addHelper() or on-demand loading * via getHelper()). * * Throws an exception if the referenced helper does not exist in the * stack; use {@link hasHelper()} to check if the helper is registered * prior to retrieving it. * * @param string $name * @return Zend_Controller_Action_Helper_Abstract * @throws Zend_Controller_Action_Exception */ public static function getExistingHelper($name) { $name = self::_normalizeHelperName($name); $stack = self::getStack(); if (!isset($stack->{$name})) { require_once 'Zend/Controller/Action/Exception.php'; throw new Zend_Controller_Action_Exception('Action helper "' . $name . '" has not been registered with the helper broker'); } return $stack->{$name}; } /** * Return all registered helpers as helper => object pairs * * @return array */ public static function getExistingHelpers() { return self::getStack()->getHelpersByName(); } /** * Is a particular helper loaded in the broker? * * @param string $name * @return boolean */ public static function hasHelper($name) { $name = self::_normalizeHelperName($name); return isset(self::getStack()->{$name}); } /** * Remove a particular helper from the broker * * @param string $name * @return boolean */ public static function removeHelper($name) { $name = self::_normalizeHelperName($name); $stack = self::getStack(); if (isset($stack->{$name})) { unset($stack->{$name}); } return false; } /** * Lazy load the priority stack and return it * * @return Zend_Controller_Action_HelperBroker_PriorityStack */ public static function getStack() { if (self::$_stack == null) { self::$_stack = new Zend_Controller_Action_HelperBroker_PriorityStack(); } return self::$_stack; } /** * Constructor * * @param Zend_Controller_Action $actionController * @return void */ public function __construct(Zend_Controller_Action $actionController) { $this->_actionController = $actionController; foreach (self::getStack() as $helper) { $helper->setActionController($actionController); $helper->init(); } } /** * notifyPreDispatch() - called by action controller dispatch method * * @return void */ public function notifyPreDispatch() { foreach (self::getStack() as $helper) { $helper->preDispatch(); } } /** * notifyPostDispatch() - called by action controller dispatch method * * @return void */ public function notifyPostDispatch() { foreach (self::getStack() as $helper) { $helper->postDispatch(); } } /** * getHelper() - get helper by name * * @param string $name * @return Zend_Controller_Action_Helper_Abstract */ public function getHelper($name) { $name = self::_normalizeHelperName($name); $stack = self::getStack(); if (!isset($stack->{$name})) { self::_loadHelper($name); } $helper = $stack->{$name}; $initialize = false; if (null === ($actionController = $helper->getActionController())) { $initialize = true; } elseif ($actionController !== $this->_actionController) { $initialize = true; } if ($initialize) { $helper->setActionController($this->_actionController) ->init(); } return $helper; } /** * Method overloading * * @param string $method * @param array $args * @return mixed * @throws Zend_Controller_Action_Exception if helper does not have a direct() method */ public function __call($method, $args) { $helper = $this->getHelper($method); if (!method_exists($helper, 'direct')) { require_once 'Zend/Controller/Action/Exception.php'; throw new Zend_Controller_Action_Exception('Helper "' . $method . '" does not support overloading via direct()'); } return call_user_func_array(array($helper, 'direct'), $args); } /** * Retrieve helper by name as object property * * @param string $name * @return Zend_Controller_Action_Helper_Abstract */ public function __get($name) { return $this->getHelper($name); } /** * Normalize helper name for lookups * * @param string $name * @return string */ protected static function _normalizeHelperName($name) { if (strpos($name, '_') !== false) { $name = str_replace(' ', '', ucwords(str_replace('_', ' ', $name))); } return ucfirst($name); } /** * Load a helper * * @param string $name * @return void */ protected static function _loadHelper($name) { try { $class = self::getPluginLoader()->load($name); } catch (Zend_Loader_PluginLoader_Exception $e) { require_once 'Zend/Controller/Action/Exception.php'; throw new Zend_Controller_Action_Exception('Action Helper by name ' . $name . ' not found', 0, $e); } $helper = new $class(); if (!$helper instanceof Zend_Controller_Action_Helper_Abstract) { require_once 'Zend/Controller/Action/Exception.php'; throw new Zend_Controller_Action_Exception('Helper name ' . $name . ' -> class ' . $class . ' is not of type Zend_Controller_Action_Helper_Abstract'); } self::getStack()->push($helper); } }
##アシスタント ブローカーの一般的な使用法:
#1. アシスタントを登録します
1.Zend_Controller_Action_HelperBroker::addHelper($helper);2. addPrefix() メソッドの Prefix パラメータを使用してクラスを登録します。 、カスタム ヘルパー クラスのパスを追加するために使用されます。
プレフィックスは Zend Framework のクラス命名規則に従う必要があります。
// Add helpers prefixed with My_Action_Helpers in My/Action/Helpers/ Zend_Controller_Action_HelperBroker::addPrefix('My_Action_Helpers');3. addPath() メソッドを使用します。最初のパラメータはディレクトリ、2 番目のパラメータはクラスのプレフィックスです (デフォルトは「Zend_Controller_Action_Helper」)。 。 は、独自のクラス プレフィックスを指定されたディレクトリにマップするために使用されます。
// Add helpers prefixed with Helper in Plugins/Helpers/ Zend_Controller_Action_HelperBroker::addPath('./Plugins/Helpers', 'Helper');
2. アシスタントが存在するかどうかを確認する
hasHelper($name) メソッドを使用して、アシスタントが存在するかどうかを確認します。アシスタント ブローカーが存在します アシスタントが存在するかどうか、$name はアシスタントの短縮名 (プレフィックスが削除されたもの):// Check if 'redirector' helper is registered with the broker: if (Zend_Controller_Action_HelperBroker::hasHelper('redirector')) { echo 'Redirector helper registered'; }取得するには 2 つの静的メソッドがありますアシスタント ブローカーからのアシスタント: getExistingHelper() および getStaticHelper()。 getExistingHelper() は、ヘルパーが以前に呼び出されているか、ヘルパー ブローカーに明示的に登録されている場合にのみヘルパーを取得します。そうでない場合は、例外がスローされます。 getStaticHelper() は getExistingHelper() と同じことを行いますが、ヘルパー スタックが登録されていない場合は、設定するヘルパーを取得するために getStaticHelper() を選択することをお勧めします。 両方のメソッドは、アシスタントの短縮名 (プレフィックスを削除したもの) である $name という 1 つのパラメーターを受け取ります。
// Check if 'redirector' helper is registered with the broker, and fetch: if (Zend_Controller_Action_HelperBroker::hasHelper('redirector')) { $redirector = Zend_Controller_Action_HelperBroker::getExistingHelper('redirector'); } // Or, simply retrieve it, not worrying about whether or not it was // previously registered: $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector'); }
3.removeHelper($name) はアシスタント ブローカー内のアシスタントを削除します。$name はアシスタントの短縮名です。 以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网! 相关推荐: Zend
Framework校验器Zend_Validate的用法解析 Zend
Framework中Zend_View组件的用法解析// Conditionally remove the 'redirector' helper from the broker:
if (Zend_Controller_Action_HelperBroker::hasHelper('redirector')) {
Zend_Controller_Action_HelperBroker::removeHelper('redirector')
}
以上がZend Framework アクション アシスタントの使用状況分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

.NETFramework4是开发人员和最终用户在Windows上运行最新版本的应用程序所必需的。但是,在下载安装.NETFramework4时,许多用户抱怨安装程序在中途停止,显示以下错误消息-“ .NETFramework4hasnotbeeninstalledbecauseDownloadfailedwitherrorcode0x800c0006 ”。在您的设备上安装.NETFramework4时,如果您也在体验它,那么您就来对了地方

每当您的Windows11或Windows10PC出现升级或更新问题时,您通常会看到一个错误代码,指示故障背后的实际原因。但是,有时,升级或更新失败可能不会显示错误代码,这时就会出现混淆。有了方便的错误代码,您就可以确切地知道问题出在哪里,因此您可以尝试修复。但是由于没有出现错误代码,因此识别问题并解决它变得极具挑战性。这会占用您大量时间来简单地找出错误背后的原因。在这种情况下,您可以尝试使用Microsoft提供的名为SetupDiag的专用工具,该工具可帮助您轻松识别错误背后的真
![SCNotification 已停止工作 [修复它的 5 个步骤]](https://img.php.cn/upload/article/000/887/227/168433050522031.png)
作为Windows用户,您很可能会在每次启动计算机时遇到SCNotification已停止工作错误。SCNotification.exe是一个微软系统通知文件,由于权限错误和点网故障等原因,每次启动PC时都会崩溃。此错误也以其问题事件名称而闻名。因此,您可能不会将其视为SCNotification已停止工作,而是将其视为错误clr20r3。在本文中,我们将探讨您需要采取的所有步骤来修复SCNotification已停止工作,以免它再次困扰您。什么是SCNotification.e

已安装Microsoft.NET版本4.5.2、4.6或4.6.1的MicrosoftWindows用户如果希望Microsoft将来通过产品更新支持该框架,则必须安装较新版本的Microsoft框架。据微软称,这三个框架都将在2022年4月26日停止支持。支持日期结束后,产品将不会收到“安全修复或技术支持”。大多数家庭设备通过Windows更新保持最新。这些设备已经安装了较新版本的框架,例如.NETFramework4.8。未自动更新的设备可能

自我们谈论影响安装KB5012643forWindows11的用户的新安全模式错误以来已经过去了一周。这个讨厌的问题并没有出现在微软在发布当天发布的已知问题列表中,因此让所有人都感到意外。好吧,就在您认为情况不会变得更糟的时候,微软为安装此累积更新的用户投下了另一颗炸弹。Windows11Build22000.652导致更多问题因此,这家科技公司警告Windows11用户,他们在启动和使用某些.NETFramework3.5应用程序时可能会遇到问题。听起来很熟悉?不过请不要惊

如何在Zend框架中使用ACL(AccessControlList)进行权限控制导言:在一个Web应用程序中,权限控制是至关重要的一项功能。它可以确保用户只能访问其有权访问的页面和功能,并防止未经授权的访问。Zend框架提供了一种方便的方法来实现权限控制,即使用ACL(AccessControlList)组件。本文将介绍如何在Zend框架中使用ACL

PHP实现框架:ZendFramework入门教程ZendFramework是PHP开发的一种开源网站框架,目前由ZendTechnologies维护,ZendFramework采用了MVC设计模式,提供了一系列可重用的代码库,服务于实现Web2.0应用程序和Web服务。ZendFramework深受PHP开发者的欢迎和推崇,拥有广泛

12月9日消息,最近,酷冷至尊在台北电脑展上的一次展示活动中,展示了与笔记本模块化方案提供商framework合作的迷你机箱套件,这个套件的独特之处在于,它可以兼容并安装来自framework笔记本的主板。目前,这款产品已经开始在市场上销售,售价定为39美元,按当前汇率折合大约279元人民币。这款机箱套件的型号被命名为“frameWORKMAINBOARDCASE”。在设计方面,它体现了极致的紧凑与实用性,尺寸仅为297x133x15毫米。它的设计初衷是为了能够无缝接入framework笔记本的


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
