. */ /** * Doctrine_Tree * * @package Doctrine * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @category Object Relational Mapping * @link www.phpdoctrine.com * @since 1.0 * @version $Revision$ * @author Joe Simms */ class Doctrine_Tree { /** * @param object $table reference to associated Doctrine_Table instance */ protected $table; /** * @param array $options */ protected $options; /** * contructor, creates tree with reference to table and any options * * @param object $table instance of Doctrine_Table * @param array $options options */ public function __construct($table, $options) { $this->table = $table; $this->options = $options; } /** * Used to define table attributes required for the given implementation * */ public function setTableDefinition() { throw new Doctrine_Tree_Exception('Table attributes have not been defined for this Tree implementation.'); } /** * this method is used for setting up relations and attributes and should be used by specific implementations * */ public function setUp() { } /** * factory method to return tree instance based upon chosen implementation * * @param object $table instance of Doctrine_Table * @param string $impName implementation (NestedSet, AdjacencyList, MaterializedPath) * @param array $options options * @return object $options instance of Doctrine_Node */ public static function factory( &$table, $implName, $options = array()) { $class = 'Doctrine_Tree_'.$implName; if(!class_exists($class)) throw new Doctrine_Exception('The chosen class must extend Doctrine_Tree'); return new $class($table, $options); } } // END class