| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- <?php
- namespace Schema;
- use Schema\Db\Table as Table;
- use Schema\Db\Adapter\PostgresAdapter;
- use Schema\Db\Adapter\MysqlAdapter;
- use Schema\Db\Adapter\SQLiteAdapter;
- use Schema\Db\Adapter\SqlServerAdapter;
- /*
- * @ctag Wrapper::get_table('table');
- * @ctag Wrapper::exec('table');
- *
- * @ctag $table->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);
- }
- }
|