01.04 php saved
AdamFriedman
Tags add more
 
Note
I simply added a check to see if a component was already loaded.
  1. <?php
  2. //loads a component on the fly from within the controller
  3. class ComponentLoaderComponent extends Object {
  4.    
  5.     var $controller = null;
  6.    
  7.     function initialize(&$controller) {
  8.         // saving the controller reference for later use
  9.         $this->controller =& $controller;
  10.     }
  11.  
  12.     function load($component_name) {
  13.        // If component already loaded/attached, then bail out
  14.        if(isset($this->controller->{$component_name}) && is_object($this->controller->{$component_name})) {
  15.             return
  16.     }
  17.        
  18.         // Load component and attach to controller
  19.         App::import('Component', $component_name);
  20.         $component2 = $component_name.'Component';
  21.         $component =& new $component2(null);
  22.        
  23.         if (method_exists($component, 'initialize'))
  24.             $component->initialize($this->controller);
  25.  
  26.         if (method_exists($component, 'startup'))
  27.             $component->startup($this->controller);
  28.        
  29.         $this->controller->{$component_name} = &$component;
  30.     }
  31. }
  32.  
  33. ?>
  34.  
Parsed in 0.033 seconds, using GeSHi 1.0.7.14

Modify this Paste