* $database = new RPDO( $dsn, $user, $pass ); * $adapter = new DBAdapter( $database ); * $writer = new PostgresWriter( $adapter ); * $oodb = new OODB( $writer, FALSE ); * $bean = $oodb->dispense( 'bean' ); * $bean->name = 'coffeeBean'; * $id = $oodb->store( $bean ); * $bean = $oodb->load( 'bean', $id ); * * * The example above creates the 3 RedBeanPHP core objects: * the Adapter, the Query Writer and the OODB instance and * wires them together. The example also demonstrates some of * the methods that can be used with OODB, as you see, they * closely resemble their facade counterparts. * * The wiring process: create an RPDO instance using your database * connection parameters. Create a database adapter from the RPDO * object and pass that to the constructor of the writer. Next, * create an OODB instance from the writer. Now you have an OODB * object. * * @param Driver $database ADO Compatible DB Instance */ public function __construct( $database ) { $this->db = $database; } /** * Returns a string containing the most recent SQL query * processed by the database adapter, thus conforming to the * interface: * * @see Adapter::getSQL * * Methods like get(), getRow() and exec() cause this SQL cache * to get filled. If no SQL query has been processed yet this function * will return an empty string. * * @return string */ public function getSQL() { return $this->sql; } /** * @see Adapter::exec */ public function exec( $sql, $bindings = array(), $noevent = FALSE ) { if ( !$noevent ) { $this->sql = $sql; $this->signal( 'sql_exec', $this ); } return $this->db->Execute( $sql, $bindings ); } /** * @see Adapter::get */ public function get( $sql, $bindings = array() ) { $this->sql = $sql; $this->signal( 'sql_exec', $this ); return $this->db->GetAll( $sql, $bindings ); } /** * @see Adapter::getRow */ public function getRow( $sql, $bindings = array() ) { $this->sql = $sql; $this->signal( 'sql_exec', $this ); return $this->db->GetRow( $sql, $bindings ); } /** * @see Adapter::getCol */ public function getCol( $sql, $bindings = array() ) { $this->sql = $sql; $this->signal( 'sql_exec', $this ); return $this->db->GetCol( $sql, $bindings ); } /** * @see Adapter::getAssoc */ public function getAssoc( $sql, $bindings = array() ) { $this->sql = $sql; $this->signal( 'sql_exec', $this ); $rows = $this->db->GetAll( $sql, $bindings ); if ( !$rows ) return array(); $assoc = array(); foreach ( $rows as $row ) { if ( empty( $row ) ) continue; $key = array_shift( $row ); switch ( count( $row ) ) { case 0: $value = $key; break; case 1: $value = reset( $row ); break; default: $value = $row; } $assoc[$key] = $value; } return $assoc; } /** * @see Adapter::getAssocRow */ public function getAssocRow($sql, $bindings = array()) { $this->sql = $sql; $this->signal( 'sql_exec', $this ); return $this->db->GetAssocRow( $sql, $bindings ); } /** * @see Adapter::getCell */ public function getCell( $sql, $bindings = array(), $noSignal = NULL ) { $this->sql = $sql; if ( !$noSignal ) $this->signal( 'sql_exec', $this ); return $this->db->GetOne( $sql, $bindings ); } /** * @see Adapter::getCursor */ public function getCursor( $sql, $bindings = array() ) { return $this->db->GetCursor( $sql, $bindings ); } /** * @see Adapter::getInsertID */ public function getInsertID() { return $this->db->getInsertID(); } /** * @see Adapter::getAffectedRows */ public function getAffectedRows() { return $this->db->Affected_Rows(); } /** * @see Adapter::getDatabase */ public function getDatabase() { return $this->db; } /** * @see Adapter::startTransaction */ public function startTransaction() { $this->db->StartTrans(); } /** * @see Adapter::commit */ public function commit() { $this->db->CommitTrans(); } /** * @see Adapter::rollback */ public function rollback() { $this->db->FailTrans(); } /** * @see Adapter::close. */ public function close() { $this->db->close(); } /** * Sets initialization code for connection. * * @param callable $code */ public function setInitCode($code) { $this->db->setInitCode($code); } /** * @see Adapter::setOption */ public function setOption( $optionKey, $optionValue ) { if ( method_exists( $this->db, $optionKey ) ) { call_user_func( array( $this->db, $optionKey ), $optionValue ); return TRUE; } return FALSE; } /** * @see Adapter::getDatabaseServerVersion */ public function getDatabaseServerVersion() { return $this->db->DatabaseServerVersion(); } }