/** * Generic Kickstart method. * This is the generic kickstarter. It will establish a database connection * using the $dsn, the $username and the $password you provide. * If $frozen is boolean TRUE it will start RedBean in frozen mode, meaning * that the database cannot be altered. If RedBean is started in fluid mode * it will adjust the schema of the database if it detects an * incompatible bean. * This method returns a RedBean_Toolbox $toolbox filled with a * RedBean_Adapter, a RedBean_QueryWriter and most importantly a * RedBean_OODB; the object database. To start storing beans in the database * simply say: $redbean = $toolbox->getRedBean(); Now you have a reference * to the RedBean object. * Optionally instead of using $dsn you may use an existing PDO connection. * Example: RedBean_Setup::kickstart($existingConnection, true); * * @param string|PDO $dsn Database Connection String * @param string $username Username for database * @param string $password Password for database * @param boolean $frozen Start in frozen mode? * * @return RedBean_ToolBox $toolbox */ public static function kickstart($dsn, $username = NULL, $password = NULL, $frozen = false) { if ($dsn instanceof PDO) { $pdo = new RedBean_Driver_PDO($dsn); $dsn = $pdo->getDatabaseType(); } else { self::checkDSN($dsn); $pdo = new RedBean_Driver_PDO($dsn, $username, $password); } $adapter = new RedBean_Adapter_DBAdapter($pdo); if (strpos($dsn, "pgsql") === 0) { $writer = new RedBean_QueryWriter_PostgreSQL($adapter); } else { if (strpos($dsn, "sqlite") === 0) { $writer = new RedBean_QueryWriter_SQLiteT($adapter); } else { $writer = new RedBean_QueryWriter_MySQL($adapter); } } $redbean = new RedBean_OODB($writer); if ($frozen) { $redbean->freeze(true); } $toolbox = new RedBean_ToolBox($redbean, $adapter, $writer); //deliver everything back in a neat toolbox self::$toolbox = $toolbox; return self::$toolbox; }
/** * Test debugging with custom logger. * * @return void */ public function testDebugCustomLogger() { testpack('Test debug mode with custom logger'); $pdoDriver = new RedBean_Driver_PDO(R::getDatabaseAdapter()->getDatabase()->getPDO()); $customLogger = new CustomLogger(); $pdoDriver->setDebugMode(TRUE, $customLogger); $pdoDriver->Execute('SELECT 123'); asrt(count($customLogger->getLogMessage()), 1); $pdoDriver->setDebugMode(TRUE, NULL); asrt($pdoDriver->getLogger() instanceof RedBean_Logger_Default, TRUE); testpack('Test bean->getProperties method'); $bean = R::dispense('bean'); $bean->property = 'hello'; $props = $bean->getProperties(); asrt(isset($props['property']), TRUE); asrt($props['property'], 'hello'); testpack('Test snake_case vs CamelCase with Query Builder'); list($sql, $params) = R::$f->begin()->camelCase()->getQuery(); asrt(trim($sql), 'camel case'); list($sql, $params) = R::$f->begin()->personASTeacher()->getQuery(); asrt(trim($sql), 'person as teacher'); list($sql, $params) = R::$f->begin()->JOIN()->getQuery(); asrt(trim($sql), 'join'); RedBean_SQLHelper::useCamelCase(FALSE); list($sql, $params) = R::$f->begin()->camelCase()->getQuery(); asrt(trim($sql), 'camelCase'); }
/** * Returns an instance of the PDO Driver. * @param $dsn * @param $user * @param $pass * @param $dbname * @return unknown_type */ public static function getInstance($dsn, $user, $pass, $dbname) { if (is_null(self::$instance)) { self::$instance = new RedBean_Driver_PDO($dsn, $user, $pass); } return self::$instance; }
/** * Initializes the database and prepares a toolbox. * The kickstart method assembles a toolbox based on your DSN and * credentials and returns it. * The toolbox contains all the necessary core components for * RedBeanPHP to start working with your database. Most RedBeanPHP * components are stand-alone and require a toolbox to work. * * @param string|PDO $dsn Database Connection String (or PDO instance) * @param string $username Username for database * @param string $password Password for database * @param boolean $frozen Start in frozen mode? * * @return RedBean_ToolBox */ public static function kickstart($dsn, $username = NULL, $password = NULL, $frozen = FALSE, $autoSetEncoding = TRUE) { if ($dsn instanceof PDO) { $db = new RedBean_Driver_PDO($dsn); $dsn = $db->getDatabaseType(); } else { self::checkDSN($dsn); if (strpos($dsn, 'oracle') === 0) { $db = new RedBean_Driver_OCI($dsn, $username, $password); } else { $db = new RedBean_Driver_PDO($dsn, $username, $password, $autoSetEncoding); } } $adapter = new RedBean_Adapter_DBAdapter($db); if (strpos($dsn, 'pgsql') === 0) { $writer = new RedBean_QueryWriter_PostgreSQL($adapter); } else { if (strpos($dsn, 'sqlite') === 0) { $writer = new RedBean_QueryWriter_SQLiteT($adapter); } else { if (strpos($dsn, 'cubrid') === 0) { $writer = new RedBean_QueryWriter_CUBRID($adapter); } else { if (strpos($dsn, 'oracle') === 0) { $writer = new RedBean_QueryWriter_Oracle($adapter); } else { $writer = new RedBean_QueryWriter_MySQL($adapter); } } } } $redbean = new RedBean_OODB($writer); if ($frozen) { $redbean->freeze(TRUE); } $toolbox = new RedBean_ToolBox($redbean, $adapter, $writer); return $toolbox; }
/** * Generic Kickstart method. * This is the generic kickstarter. It will prepare a database connection * using the $dsn, the $username and the $password you provide. * If $frozen is boolean TRUE it will start RedBean in frozen mode, meaning * that the database cannot be altered. If RedBean is started in fluid mode * it will adjust the schema of the database if it detects an * incompatible bean. * This method returns a RedBean_Toolbox $toolbox filled with a * RedBean_Adapter, a RedBean_QueryWriter and most importantly a * RedBean_OODB; the object database. To start storing beans in the database * simply say: $redbean = $toolbox->getRedBean(); Now you have a reference * to the RedBean object. * Optionally instead of using $dsn you may use an existing PDO connection. * Example: RedBean_Setup::kickstart($existingConnection, true); * * @param string|PDO $dsn Database Connection String (or PDO instance) * @param string $username Username for database * @param string $password Password for database * @param boolean $frozen Start in frozen mode? * * @return RedBean_ToolBox $toolbox */ public static function kickstart($dsn, $username = NULL, $password = NULL, $frozen = false) { if ($dsn instanceof PDO) { $pdo = new RedBean_Driver_PDO($dsn); $dsn = $pdo->getDatabaseType(); } else { static::checkDSN($dsn); $pdo = new RedBean_Driver_PDO($dsn, $username, $password); } $adapter = new RedBean_Adapter_DBAdapter($pdo); $writerClassName = static::resolveQueryWriterTypeByDsn($dsn); $writer = new $writerClassName($adapter); $redbean = new RedBean_OODB($writer); if ($frozen) { $redbean->freeze(true); } $toolbox = new RedBean_ToolBox($redbean, $adapter, $writer); //deliver everything back in a neat toolbox return $toolbox; }
/** * Tests FUSE and lists, FUSE enforces no more than * 3 sugar cubes in coffee. * * @return void */ public function testCoffeeWithSugarAndFUSE() { $coffee = R::dispense('coffee'); $coffee->size = 'XL'; $coffee->ownSugar = R::dispense('sugar', 5); $id = R::store($coffee); $coffee = R::load('coffee', $id); asrt(count($coffee->ownSugar), 3); $coffee->ownSugar = R::dispense('sugar', 2); $id = R::store($coffee); $coffee = R::load('coffee', $id); asrt(count($coffee->ownSugar), 2); $cocoa = R::dispense('cocoa'); $cocoa->name = 'Fair Cocoa'; list($taste1, $taste2) = R::dispense('taste', 2); $taste1->name = 'sweet'; $taste2->name = 'bitter'; $cocoa->ownTaste = array($taste1, $taste2); R::store($cocoa); $cocoa->name = 'Koko'; R::store($cocoa); if (method_exists(R::$adapter->getDatabase(), 'getPDO')) { $pdo = R::$adapter->getDatabase()->getPDO(); $driver = new RedBean_Driver_PDO($pdo); pass(); asrt($pdo->getAttribute(PDO::ATTR_ERRMODE), PDO::ERRMODE_EXCEPTION); asrt($pdo->getAttribute(PDO::ATTR_DEFAULT_FETCH_MODE), PDO::FETCH_ASSOC); asrt(strval($driver->GetCell('select 123')), '123'); } $a = new RedBean_Exception_SQL(); $a->setSqlState('test'); $b = strval($a); asrt($b, '[test] - '); }
/** * Initializes the database and prepares a toolbox. * * @param string|PDO $dsn Database Connection String (or PDO instance) * @param string $username Username for database * @param string $password Password for database * @param boolean $frozen Start in frozen mode? * * @return RedBean_ToolBox $toolbox */ public static function kickstart($dsn, $username = null, $password = null, $frozen = false ) { if ($dsn instanceof PDO) { $db = new RedBean_Driver_PDO($dsn); $dsn = $db->getDatabaseType(); } else { self::checkDSN($dsn); if (strpos($dsn, 'oracle') === 0) $db = new RedBean_Driver_OCI($dsn, $username, $password); else $db = new RedBean_Driver_PDO($dsn, $username, $password); } $adapter = new RedBean_Adapter_DBAdapter($db); if (strpos($dsn, 'pgsql') === 0) $writer = new RedBean_QueryWriter_PostgreSQL($adapter); else if (strpos($dsn, 'sqlite') === 0) $writer = new RedBean_QueryWriter_SQLiteT($adapter); else if (strpos($dsn, 'cubrid') === 0) $writer = new RedBean_QueryWriter_CUBRID($adapter); else if (strpos($dsn, 'oracle') === 0) $writer = new RedBean_QueryWriter_Oracle($adapter); else $writer = new RedBean_QueryWriter_MySQL($adapter); $redbean = new RedBean_OODB($writer); if ($frozen) $redbean->freeze(true); $toolbox = new RedBean_ToolBox($redbean, $adapter, $writer); return $toolbox; }