addColumn('column', 'type', $options = array()); * @ctag $table->addColumn('column', 'string', $options = array( 'null' => true, 'default' => '' ) ); * @ctag $table->addColumn('column', 'integer', $options = array( 'null' => true, 'default' => 0 ) ); * @ctag $table->addColumn('column', 'text', $options = array( 'null' => true, 'default'=> '' ) ); * @ctag $table->hasColumn('column'); * * @ctag $table->addTimestamps(); * @ctag $table->addTimestamps('created_at', 'updated_at'); * @ctag $table->addSoftDelete(); * @ctag $table->addSoftDelete($deletedAtColumnName = 'deleted_at'); * * @ctag $table->addSoftDelete(); * @ctag $table->removeColumn('column'); * @ctag $table->renameColumn('column', 'newName'); * @ctag $table->changeColumn('column', 'type', $options = array()); * * @ctag $table->addForeignKey(Array('column'), 'remoteTable', Array('remoteColumn'), $options = array()); * @ctag $table->addIndex($columns, $options = array()); * */ class Wrapper{ private static $_instance; public $_adapter; public $_driver; function __construct(){ } //SINGLETON============================================== private static function newObj(){ if (!isset(self::$_instance)) { self::$_instance = new Wrapper(); } return self::$_instance; } public static function getInstance(){ if (!isset(self::$_instance)) { return self::newObj(); } return self::$_instance; } //======================================================= public static function set_driver(\PDO $driver){ $instance = self::getInstance(); $instance->_driver = $driver; switch ($driver->getAttribute(\PDO::ATTR_DRIVER_NAME)){ case 'sqlite': $instance->_adapter = new SQLiteAdapter(); $instance-> _adapter->setConnection($driver); break; case 'pgsql': $instance->_adapter = new PostgresAdapter(); $instance->_adapter->setConnection($driver); break; case 'mysql': break; default: break; } } public static function get_table($name){ $instance = self::getInstance(); if( $instance->_adapter->getConnection()->prefix ){ $name = $instance->_adapter->getConnection()->prefix . $name; } return new Table($name, Array(), $instance->_adapter); } public static function begin(){ $instance = self::getInstance(); $instance->_adapter->beginTransaction(); } public static function commit(){ $instance = self::getInstance(); $instance->_adapter->commitTransaction(); } public static function exec($sql){ $instance = self::getInstance(); $prefix = $instance->_adapter->getConnection()->prefix; $sql = preg_replace('/{(.*)}/', "$prefix$1", $sql); $instance->_driver->exec($sql); } }