Wrapper.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace DDLWrapper;
  3. use DDLWrapper\Db\Table as Table;
  4. use DDLWrapper\Db\Adapter\PostgresAdapter;
  5. use DDLWrapper\Db\Adapter\MysqlAdapter;
  6. use DDLWrapper\Db\Adapter\SQLiteAdapter;
  7. use DDLWrapper\Db\Adapter\SqlServerAdapter;
  8. class Wrapper{
  9. private static $_instance;
  10. public $_adapter;
  11. public $_driver;
  12. function __construct(){ }
  13. //SINGLETON==============================================
  14. private static function newObj(){
  15. if (!isset(self::$_instance)) {
  16. self::$_instance = new Wrapper();
  17. }
  18. return self::$_instance;
  19. }
  20. public static function getInstance(){
  21. if (!isset(self::$_instance)) {
  22. return self::newObj();
  23. }
  24. return self::$_instance;
  25. }
  26. //=======================================================
  27. public static function set_driver(\PDO $driver){
  28. $instance = self::getInstance();
  29. $instance->_driver = $driver;
  30. switch ($driver->getAttribute(\PDO::ATTR_DRIVER_NAME)){
  31. case 'sqlite':
  32. $instance->_adapter = new SQLiteAdapter();
  33. $instance-> _adapter->setConnection($driver);
  34. break;
  35. case 'pgsql':
  36. $instance->_adapter = new PostgresAdapter();
  37. $instance->_adapter->setConnection($driver);
  38. break;
  39. case 'mysql':
  40. break;
  41. default:
  42. break;
  43. }
  44. }
  45. public static function get_table($name){
  46. $instance = self::getInstance();
  47. return new Table($name, Array(), $instance->_adapter);
  48. }
  49. public static function begin(){
  50. $instance = self::getInstance();
  51. $instance->_adapter->beginTransaction();
  52. }
  53. public static function commit(){
  54. $instance = self::getInstance();
  55. $instance->_adapter->commitTransaction();
  56. }
  57. public static function exec($sql){
  58. $instance = self::getInstance();
  59. $instance->_driver->exec($sql);
  60. }
  61. }