コード例 #1
0
ファイル: Setup.php プロジェクト: ryjkov/redbean
 /**
  * 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;
 }
コード例 #2
0
 /**
  * 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');
 }
コード例 #3
0
ファイル: PDO.php プロジェクト: jgosier/ushahidi_swift
 /**
  * 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;
 }
コード例 #4
0
 /**
  * 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;
 }
コード例 #5
0
ファイル: rb.php プロジェクト: spiogit/cna-seed-project
 /**
  * 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;
 }
コード例 #6
0
 /**
  * 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] - ');
 }
コード例 #7
0
ファイル: rb.php プロジェクト: nirgavish/Framework--Apex
	/**
	 * 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;
	}