86 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace nulib\db\_private;
 | |
| 
 | |
| use nulib\exceptions;
 | |
| 
 | |
| abstract class _base extends _common {
 | |
|   protected static function verifix(&$sql, ?array &$bindings=null, ?array &$meta=null): void {
 | |
|     if (is_array($sql)) {
 | |
|       $prefix = $sql[0] ?? null;
 | |
|       if ($prefix === null) {
 | |
|         throw exceptions::invalid_type($sql, "cette requête sql");
 | |
|       } elseif (_create::isa($prefix)) {
 | |
|         $sql = _create::parse($sql, $bindings);
 | |
|         $meta = ["isa" => "create", "type" => "ddl"];
 | |
|       } elseif (_select::isa($prefix)) {
 | |
|         $sql = _select::parse($sql, $bindings);
 | |
|         $meta = ["isa" => "select", "type" => "dql"];
 | |
|       } elseif (_insert::isa($prefix)) {
 | |
|         $sql = _insert::parse($sql, $bindings);
 | |
|         $meta = ["isa" => "insert", "type" => "dml"];
 | |
|       } elseif (_update::isa($prefix)) {
 | |
|         $sql = _update::parse($sql, $bindings);
 | |
|         $meta = ["isa" => "update", "type" => "dml"];
 | |
|       } elseif (_delete::isa($prefix)) {
 | |
|         $sql = _delete::parse($sql, $bindings);
 | |
|         $meta = ["isa" => "delete", "type" => "dml"];
 | |
|       } elseif (_generic::isa($prefix)) {
 | |
|         $sql = _generic::parse($sql, $bindings);
 | |
|         $meta = ["isa" => "generic", "type" => null];
 | |
|       } else {
 | |
|         throw exceptions::invalid_type($sql, "cette requête sql");
 | |
|       }
 | |
|     } else {
 | |
|       if (!is_string($sql)) $sql = strval($sql);
 | |
|       if (_create::isa($sql)) {
 | |
|         $meta = ["isa" => "create", "type" => "ddl"];
 | |
|       } elseif (_select::isa($sql)) {
 | |
|         $meta = ["isa" => "select", "type" => "dql"];
 | |
|       } elseif (_insert::isa($sql)) {
 | |
|         $meta = ["isa" => "insert", "type" => "dml"];
 | |
|       } elseif (_update::isa($sql)) {
 | |
|         $meta = ["isa" => "update", "type" => "dml"];
 | |
|       } elseif (_delete::isa($sql)) {
 | |
|         $meta = ["isa" => "delete", "type" => "dml"];
 | |
|       } elseif (_generic::isa($sql)) {
 | |
|         $meta = ["isa" => "generic", "type" => null];
 | |
|       } else {
 | |
|         $meta = ["isa" => "generic", "type" => null];
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   static function with($sql, ?array $params=null): array {
 | |
|     static::verifix($sql, $params);
 | |
|     return [$sql, $params];
 | |
|   }
 | |
| 
 | |
|   function __construct($sql, ?array $bindings=null) {
 | |
|     static::verifix($sql, $bindings, $meta);
 | |
|     $this->sql = $sql;
 | |
|     $this->bindings = $bindings;
 | |
|     $this->meta = $meta;
 | |
|   }
 | |
| 
 | |
|   /** @var string */
 | |
|   protected $sql;
 | |
| 
 | |
|   function getSql(): string {
 | |
|     return $this->sql;
 | |
|   }
 | |
| 
 | |
|   /** @var ?array */
 | |
|   protected $bindings;
 | |
| 
 | |
|   function getBindings(): ?array {
 | |
|     return $this->bindings;
 | |
|   }
 | |
| 
 | |
|   /** @var ?array */
 | |
|   protected $meta;
 | |
| 
 | |
|   function isInsert(): bool {
 | |
|     return ($this->meta["isa"] ?? null) === "insert";
 | |
|   }
 | |
| }
 |