البته احتمالا استاندارد نیس ولی خب من تا جایی که بلدم پیادهسازی کردم
class JsonBaseModel extends BaseModel { protected $base_path; protected $table_filepath; public function __construct() { $this->base_path = BASEPATH . 'storage/json-db/'; $this->table_filepath = $this->base_path . $this->table . '.json'; } #------------------------------------------------------------ #. #. #. #. #. # --- CRUD -------------------------------------------------- #------------------------------------------------------------ public function insert(array $data): int { $table_data = $this->read_table(); $table_data[] = $data; $this->write_file($table_data); return $data[$this->primary_key]; } public function find(int $id): object|null { $data = $this->read_table(); foreach ($data as $row) { if ($row->{$this->primary_key} == $id) return $row; } return null; } public function get(array $columns, array $where): array { $table_data = $this->read_table(); $data_user = []; $data = []; $where_key = array_keys($where); foreach ($table_data as $user) { for ($i = 0; $i < sizeof($where_key); $i++) { if ($where[$where_key[$i]] == $user->{$where_key[$i]}) { $data_user = (array) $user; } } } foreach ($columns as $column) { $data[$column] = $data_user[$column]; } return $data; } public function getAll(): array { return $this->read_table(); } public function update(array $data, array $where): int { $table_data = $this->read_table(); foreach ($table_data as $user) { $key_data = array_keys($where)[0]; if ($where[$key_data] == $user->{$key_data}) { foreach ($data as $column) { $key = array_keys($data); $i = 0; $user->{$key[$i]} = $data[$key[$i]]; $this->write_file($table_data); } return 1; } return 0; } } public function delete(array $where): int { $return = 0; $table_data = $this->read_table(); $key_data = array_keys($where)[0]; $i = 0; foreach ($table_data as $user) { if ($where[$key_data] == $user->{$key_data}) { unset($table_data[$i]); $return = 1; } $i++; } $this->write_file($table_data); return $return; } #------------------------------------------------------------ #------------------------------------------------------------ #------------------------------------------------------------ private function read_table() { return json_decode(file_get_contents($this->table_filepath)); } private function write_file($data) { file_put_contents($this->table_filepath, json_encode($data)); } }