App::import('Component', 'MyComponent') will load the component.

In the Component::startup() you should have:

public function startup(&$controller){
    $this->MyComponent = $controller->MyComponent;
}

so that you can then create a component instance when you need it:

$this->MyComponentInstance = new MyComponent();

-J.

On Apr 22, 9:57 am, Anthony <[EMAIL PROTECTED]> wrote:
> I'm trying to solve the same exact problem, so far unsuccessfully...
> Any suggestions out there?
>
> On Apr 20, 5:44 am, mixersoft <[EMAIL PROTECTED]> wrote:
>
> > 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 
"CakePHP" group.
To post to this group, send email to [email protected]
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