1
0

sql.class.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. require_once('query.class.php');
  3. /**
  4. * SQL class. Used for handling SQL connections
  5. *
  6. * @module sql
  7. * @class SQL
  8. * @constructor
  9. */
  10. class SQL {
  11. /**
  12. * This is the mysqli connection beneath everything
  13. *
  14. * @property sql
  15. * @type {mysqli}
  16. * @private
  17. * @required
  18. */
  19. private $sql;
  20. public $queries = [];
  21. private static $connections = [];
  22. public function __construct($server,$user,$pass,$db){
  23. $this->sql = new mysqli('p:'.$server,$user,$pass,$db) or die('Unable to connect to mysql');
  24. self::$connections[] = $sql;
  25. }
  26. public function __destruct(){
  27. $this->sql->rollback();
  28. $this->sql->close();
  29. foreach($this->queries as $query){
  30. unset($query);
  31. }
  32. self::$connections = array_diff(self::$connections, [$this]);
  33. }
  34. public function __invoke(){
  35. return $this->sql;
  36. }
  37. public function __get($name){
  38. switch($name){
  39. case 'error':
  40. return $this->sql->error;
  41. break;
  42. case 'insert_id':
  43. return $this->sql->insert_id;
  44. break;
  45. }
  46. }
  47. /**
  48. * Returns a Query object based on inputs
  49. *
  50. * @method query
  51. * @param {String} sql The sql expression to run
  52. * @param {String=null} [types] A string containing all the types of arguments being passed
  53. * @param {Mixed} [bindings]* The bindings to use in the sql statement
  54. * @return {Query} Returns the query object
  55. */
  56. public function query(...$args){
  57. return new SQL\Query(...array_merge([$this], $args));
  58. }
  59. public function escape($s){
  60. return $this->sql->escape_string($s);
  61. }
  62. public function charset($charset){
  63. return $this->sql->set_charset($charset);
  64. }
  65. public static function make_referenced(&$arr){
  66. $refs = [];
  67. foreach($arr as $key => $value){
  68. $refs[$key] = &$arr[$key];
  69. }
  70. return $refs;
  71. }
  72. public static function shutdown(){
  73. foreach(self::$connections as $sql){
  74. unset($sql);
  75. }
  76. }
  77. }
  78. register_shutdown_function(function(){
  79. SQL::shutdown();
  80. });
  81. ?>