I have a "parent" component that I want to use to implement an
"interface" (java style) and multple "child" components that extend
the "interface". I want my controllers to instantiate a specific
"child" component, but in the code I want to reference all methods
through the "parent" class or "inteface"

class ParentComponent extends Object {}

class TypeAComponent extends InterfaceComponent {
  function someMethod() { return "a";}
}

class TypeBComponent extends InterfaceComponent {
  function someMethod() { return 'b';}

}

class MyController extends AppController {
  var $components('TypeAComponent');

  function example() {
    $result = $this->Parent->someMethod();
  }
}

The example above works fine. But I cannot figure out how to load
'TypeAComponent' or 'TypeBComponent' dynamically. How can I set
MyConfroller->components BEFORE the controller loads the components?
Or how do I load additional components afterwards?

I tried this in ParentComponent, but while the subclassed components
constructors were called properly, the components were not "loaded"
the same way (i.e. the child component's var $component array were not
loaded, i.e. Session.)

class ParentComponent extends Object {
        static function create($type) {
                switch ($type) {
                        case 'TypeA':
                                include_once(dirname(__FILE__).DS.'typeA.php');
                                return new TypeAComponent();
                                break;
                        case 'TypeB':
                                include_once(dirname(__FILE__).DS.'typeB.php');
                                return new TypeBComponent();
                                break;
                }
        }
}

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake 
PHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to