Thursday, May 31, 2012

Using PHP's Interface as Extension Point

Hello all,

Did everyone tried to use PHP's Interface as Extension Point in CakePHP? 
My idea is to create a fully modular app. To build a menu, for example, I would be able to do something like this:

The method 'getExtensionPoint' will get all the classes that implements the given interface, at run time.

// The core of extension point
class MenuController {

  function _buildMenu() {
    $menu = array();

    $menuProviders = $this->getExtensionPoint('IMenu');
    foreach($menuProviders as $menuProvider) {
      $menu += $menuProvider->getMenu();
    }
  }

}

// Some class ( could be a Controller or a Model ) which uses this extension point
class User implements IMenu {

  function getMenu() {
    return array('Users' => '/user/list');
  }  

}

// The Interface, to bind the extended classes
public interface IMenu {
  function getMenu();
}


Sorry for write all this code here. 
Someone already did something like this? This can be done using the plugins in CakePHP ?


Thanks in advance !


Vinicius

--
Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions.
 
 
To unsubscribe from this group, send email to
cake-php+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php

No comments: