Skip to content

Commit

Permalink
Nice reconfigure method in facade to hot-swap toolbox, writers etc...
Browse files Browse the repository at this point in the history
  • Loading branch information
Gabor de Mooij, Buurtnerd committed Feb 12, 2011
1 parent a0d2d99 commit 2a93343
Showing 1 changed file with 35 additions and 16 deletions.
51 changes: 35 additions & 16 deletions RedBean/Facade.php
Expand Up @@ -98,22 +98,8 @@ public static function getVersion() {
*/
public static function setup( $dsn="sqlite:/tmp/red.db", $username=NULL, $password=NULL ) {
RedBean_Setup::kickstart( $dsn, $username, $password );
self::$toolbox = RedBean_Setup::getToolBox();
self::$writer = self::$toolbox->getWriter();
self::$adapter = self::$toolbox->getDatabaseAdapter();
self::$redbean = self::$toolbox->getRedBean();
self::$associationManager = new RedBean_AssociationManager( self::$toolbox );
self::$treeManager = new RedBean_TreeManager( self::$toolbox );
self::$linkManager = new RedBean_LinkManager( self::$toolbox );
self::$extAssocManager = new RedBean_ExtAssociationManager( self::$toolbox );
$helper = new RedBean_ModelHelper();
self::$redbean->addEventListener("update", $helper );
self::$redbean->addEventListener("open", $helper );
self::$redbean->addEventListener("delete", $helper );
self::$redbean->addEventListener("after_delete", $helper );
self::$redbean->addEventListener("after_update", $helper );
self::$redbean->addEventListener("dispense", $helper );

$toolbox = RedBean_Setup::getToolBox();
self::configureFacadeWithToolbox($toolbox);
}


Expand Down Expand Up @@ -813,6 +799,39 @@ public static function count( $beanType ) {
return R::$redbean->count($beanType);
}

/**
* Configures the facade, want to have a new Writer? A new Object Database or a new
* Adapter and you want it on-the-fly? Use this method to hot-swap your facade with a new
* toolbox.
*
* @static
* @param RedBean_ToolBox $tb toolbox
*
* @return RedBean_ToolBox $tb old, rusty, previously used toolbox
*/
public static function configureFacadeWithToolbox( RedBean_ToolBox $tb ) {

$oldTools = self::$toolbox;

self::$toolbox = $tb;
self::$writer = self::$toolbox->getWriter();
self::$adapter = self::$toolbox->getDatabaseAdapter();
self::$redbean = self::$toolbox->getRedBean();
self::$associationManager = new RedBean_AssociationManager( self::$toolbox );
self::$treeManager = new RedBean_TreeManager( self::$toolbox );
self::$linkManager = new RedBean_LinkManager( self::$toolbox );
self::$extAssocManager = new RedBean_ExtAssociationManager( self::$toolbox );
$helper = new RedBean_ModelHelper();
self::$redbean->addEventListener("update", $helper );
self::$redbean->addEventListener("open", $helper );
self::$redbean->addEventListener("delete", $helper );
self::$redbean->addEventListener("after_delete", $helper );
self::$redbean->addEventListener("after_update", $helper );
self::$redbean->addEventListener("dispense", $helper );

return $oldTools;
}



}
Expand Down

0 comments on commit 2a93343

Please sign in to comment.