Zend_Controller_Action_HelperBroker handles the details
of registering helper objects and helper paths, as well as
retrieving helpers on-demand.
To register a helper with the broker, use addHelper():
<?php
Zend_Controller_Action_HelperBroker::addHelper($helper);
Of course, instantiating and passing helpers to the broker is a bit
time and resource intensive, so two methods exists to automate
things slightly: addPrefix() and
addPath().
-
addPrefix()takes a class prefix and uses it to determine a path where helper classes have been defined. It assumes the prefix follows Zend Framework class naming conventions.<?php
// Add helpers prefixed with My_Action_Helpers in My/Action/Helpers/
Zend_Controller_Action_HelperBroker::addPrefix('My_Action_Helpers'); -
addPath()takes a directory as its first argument and a class prefix as the second argument (defaulting to 'Zend_Controller_Action_Helper'). This allows you to map your own class prefixes to specific directories.<?php
// Add helpers prefixed with Helper in Plugins/Helpers/
Zend_Controller_Action_HelperBroker::addPath('./Plugins/Helpers',
'Helper');
Since these methods are static, they may be called at any point in the controller chain in order to dynamically add helpers as needed.
Internally, the helper broker uses a PluginLoader
instance to maintain paths. You can retrieve the
PluginLoader using the static method getPluginLoader(),
or, alternately, inject a custom PluginLoader instance using
setPluginLoader().
To determine if a helper exists in the helper broker, use
hasHelper($name), where $name is the short
name of the helper (minus the prefix):
<?php
// Check if 'redirector' helper is registered with the broker:
if (Zend_Controller_Action_HelperBroker::hasHelper('redirector')) {
echo 'Redirector helper registered';
}
There are also two static methods for retrieving helpers from the helper
broker: getExistingHelper() and
getStaticHelper().
getExistingHelper()
will retrieve a helper only if it has previously been invoked by or
explicitly registered with the helper broker; it will throw an
exception if not. getStaticHelper() does the same as
getExistingHelper(), but will attempt to instantiate
the helper if has not yet been registered with the helper stack.
getStaticHelper() is a good choice for retrieving
helpers which you wish to configure.
Both methods take a single argument, $name, which is
the short name of the helper (minus the prefix).
<?php
// 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');
}
Finally, to delete a registered helper from the broker, use
removeHelper($name), where $name is the
short name of the helper (minus the prefix):
<?php
// Conditionally remove the 'redirector' helper from the broker:
if (Zend_Controller_Action_HelperBroker::hasHelper('redirector')) {
Zend_Controller_Action_HelperBroker::removeHelper('redirector')
}




