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
-~----------~----~----~----~------~----~------~--~---