+++ /dev/null
-<?php
-
-namespace RedBeanPHP;
-
-use RedBeanPHP\ToolBox as ToolBox;
-use RedBeanPHP\OODBBean as OODBBean;
-
-/**
- * Bean Helper Interface.
- *
- * Interface for Bean Helper.
- * A little bolt that glues the whole machinery together.
- * The Bean Helper is passed to the OODB RedBeanPHP Object to
- * faciliatte the creation of beans and providing them with
- * a toolbox. The Helper also facilitates the FUSE feature,
- * determining how beans relate to their models. By overriding
- * the getModelForBean method you can tune the FUSEing to
- * fit your business application needs.
- *
- * @file RedBeanPHP/IBeanHelper.php
- * @author Gabor de Mooij and the RedBeanPHP Community
- * @license BSD/GPLv2
- *
- * @copyright
- * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community
- * This source file is subject to the BSD/GPLv2 License that is bundled
- * with this source code in the file license.txt.
- */
-interface BeanHelper
-{
- /**
- * Returns a toolbox to empower the bean.
- * This allows beans to perform OODB operations by themselves,
- * as such the bean is a proxy for OODB. This allows beans to implement
- * their magic getters and setters and return lists.
- *
- * @return ToolBox
- */
- public function getToolbox();
-
- /**
- * Does approximately the same as getToolbox but also extracts the
- * toolbox for you.
- * This method returns a list with all toolbox items in Toolbox Constructor order:
- * OODB, adapter, writer and finally the toolbox itself!.
- *
- * @return array
- */
- public function getExtractedToolbox();
-
- /**
- * Given a certain bean this method will
- * return the corresponding model.
- * If no model is returned (NULL), RedBeanPHP might ask again.
- *
- * @note You can make RedBeanPHP faster by doing the setup wiring yourself.
- * The event listeners take time, so to speed-up RedBeanPHP you can
- * drop 'FUSE', if you're not interested in the Models.
- *
- * @note You can do funny stuff with this method but please be careful.
- * You *could* create a model depending on properties of the bean, but
- * it's a bit well... adventurous, here is an example:
- *
- * <code>
- * class Book extends RedBeanPHP\SimpleModel {};
- * class Booklet extends RedBeanPHP\SimpleModel {};
- *
- * class FlexBeanHelper extends RedBeanPHP\BeanHelper\SimpleFacadeBeanHelper {
- * public function getModelForBean( RedBeanPHP\OODBBean $bean ) {
- * if (!isset($bean->pages)) return NULL; //will ask again
- * if ($bean->pages <= 10) return new Booklet;
- * return new Book;
- * }
- * }
- *
- * $h = new FlexBeanHelper;
- * R::getRedBean()->setBeanHelper($h);
- * $book = R::dispense('book');
- * var_dump($book->box()); //NULL cant reach model
- * $book->pages = 5;
- * var_dump($book->box()); //Booklet
- * $book->pages = 15;
- * var_dump($book->box()); //still.. Booklet, model has been set
- * $book2 = R::dispense('book');
- * $book2->pages = 15;
- * var_dump($book2->box()); //Book, more than 10 pages
- * </code>
- *
- * @param OODBBean $bean bean to obtain the corresponding model of
- *
- * @return SimpleModel|CustomModel|NULL
- */
- public function getModelForBean( OODBBean $bean );
-}