column_array = $column_array; $this->table_name = $table_name; $this->type_id = $type_id; $columns_sql = implode(", ", $this->column_array); $column_names = implode(", ", array_map(fn($col) => explode(" ", $col)[0], $this->column_array)); $placeholders = implode(", ", array_fill(0, count($this->column_array), "?")); $set_clause = implode(", ", array_map(fn($col) => explode(" ", $col)[0] . "=?", $this->column_array)); $this->create_table = "CREATE TABLE IF NOT EXISTS {$this->table_name} (id {$this->type_id}, {$columns_sql})"; $this->delete_table = "DROP TABLE IF EXISTS {$this->table_name}"; $this->create = "INSERT INTO {$this->table_name} ({$column_names}) VALUES ({$placeholders})"; $this->select = "SELECT * FROM {$this->table_name} WHERE id=?"; $this->select_all = "SELECT * FROM {$this->table_name}"; $this->remove = "DELETE FROM {$this->table_name} WHERE id=?"; $this->clear = "TRUNCATE TABLE {$this->table_name}"; $this->create_all = function($length) use ($placeholders, $column_names, $table_name) { $placeholders_array = implode(", ", array_fill(0, $length, "({$placeholders})")); return "INSERT INTO {$table_name} ({$column_names}) VALUES {$placeholders_array}"; }; $this->update = fn($id) => "UPDATE {$this->table_name} SET {$set_clause} WHERE id = ?"; $this->update_by_condition = fn($condition) => "UPDATE {$this->table_name} SET {$set_clause} WHERE {$condition}"; } public function get_create_table(): string { return $this->create_table; } public function get_delete_table(): string { return $this->delete_table; } public function get_create(): string { return $this->create; } public function get_select(): string { return $this->select; } public function get_select_all(): string { return $this->select_all; } public function get_remove(): string { return $this->remove; } public function get_clear(): string { return $this->clear; } public function get_create_all(): \Closure { return $this->create_all; } public function get_update(): \Closure { return $this->update; } public function get_update_by_condition(): \Closure { return $this->update_by_condition; } }