Root/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | <?php namespace system\engine; use \vendor\DB\DB; abstract class HF_Model { public $id = null; public static function create( $data ) { $obj = new static (); $function = new \ReflectionClass(get_called_class()); $table = strtolower ( $function ->getShortName()); foreach (DB::getColumns( $table ) as $column ) { if (isset( $data [ $column ])) { $obj -> $column = $data [ $column ]; } } return $obj ; } public function save() { $fieldMap = []; $function = new \ReflectionClass(get_called_class()); $table = strtolower ( $function ->getShortName()); foreach (DB::getColumns( $table ) as $column ) { $fieldMap [ $column ] = $this -> $column ; } if ( $fieldMap [ "id" ] == null) { DB::insert( $table , $fieldMap ); } else { $updateFields = $fieldMap ; unset( $updateFields [ "id" ]); DB::update( $table , $updateFields , $fieldMap [ "id" ]); } } public function update( $data ) { $function = new \ReflectionClass(get_called_class()); $table = strtolower ( $function ->getShortName()); foreach (DB::getColumns( $table ) as $column ) { if ( $column == "id" || strpos ( $column , "_id" ) !== false) { continue ; // Don't allow to override id } if (isset( $data [ $column ])) { $this -> $column = $data [ $column ]; } } return $this ; } public function delete () { $function = new \ReflectionClass(get_called_class()); $table = strtolower ( $function ->getShortName()); if ( $this ->id) { DB::query( "DELETE FROM $table WHERE id = " . $this ->id); } } public function deleteRelated( $tables = []) { $function = new \ReflectionClass(get_called_class()); $table = strtolower ( $function ->getShortName()); foreach ( $tables as $relatedTable ) { DB::query( "DELETE FROM $relatedTable WHERE $table" . "_id = " . $this ->id); } } public static function getByField( $field , $value ) { $function = new \ReflectionClass(get_called_class()); $table = strtolower ( $function ->getShortName()); $fields = implode( ", " , DB::getColumns( $table )); return DB::fetchObject( "SELECT $fields FROM $table WHERE $field = ?" , get_called_class(), [ $value ]); } } |