Permalink
Browse files

Refactoring existing callbacks into triggerCallback().

  • Loading branch information...
1 parent 748ec4e commit e75f6fe2b47e5b56e7394ea10306fd24a5883b62 @markstory markstory committed Feb 28, 2010
Showing with 18 additions and 14 deletions.
  1. +18 −14 cake/libs/controller/component.php
@@ -109,12 +109,7 @@ function initialize(&$controller) {
* @link http://book.cakephp.org/view/65/MVC-Class-Access-Within-Components
*/
function startup(&$controller) {
- foreach ($this->_primary as $name) {
- $component =& $this->_loaded[$name];
- if ($component->enabled === true && method_exists($component, 'startup')) {
- $component->startup($controller);
- }
- }
+ $this->triggerCallback($controller, 'startup');
}
/**
@@ -126,12 +121,7 @@ function startup(&$controller) {
* @access public
*/
function beforeRender(&$controller) {
- foreach ($this->_primary as $name) {
- $component =& $this->_loaded[$name];
- if ($component->enabled === true && method_exists($component,'beforeRender')) {
- $component->beforeRender($controller);
- }
- }
+ $this->triggerCallback($controller, 'beforeRender');
}
/**
@@ -166,10 +156,24 @@ function beforeRedirect(&$controller, $url, $status = null, $exit = true) {
* @access public
*/
function shutdown(&$controller) {
+ $this->triggerCallback($controller, 'shutdown');
+ }
+
+/**
+ * Trigger a callback on all primary components. Will fire $callback on all components
+ * that have such a method. You can implement and fire custom callbacks in addition to the
+ * standard ones.
+ *
+ * @param Controller $controller Controller instance
+ * @param string $callback Callback to trigger.
+ * @return void
+ * @access public
+ */
+ function triggerCallback(&$controller, $callback) {
foreach ($this->_primary as $name) {
$component =& $this->_loaded[$name];
- if (method_exists($component,'shutdown') && $component->enabled === true) {
- $component->shutdown($controller);
+ if (method_exists($component, $callback) && $component->enabled === true) {
+ $component->{$callback}($controller);
}
}
}

0 comments on commit e75f6fe

Please sign in to comment.