diff --git a/src/Core/Entity.php b/src/Core/Entity.php new file mode 100644 index 0000000000..5a5e048b95 --- /dev/null +++ b/src/Core/Entity.php @@ -0,0 +1,49 @@ +. + +// }}} + +namespace App\Core; + +use App\Core\DB\DB; +use App\Util\Formatting; + +class Entity +{ + public static function create(array $args, $obj = null) + { + $class = get_called_class(); + $obj = $obj ?: new $class(); + $args['created'] = $args['modified'] = new DateTime(); + foreach ($args as $prop => $val) { + if (property_exists($class, $prop)) { + $obj->{$prop} = $val; + } else { + Log::error("Property {$class}::{$prop} doesn't exist"); + } + } + return $obj; + } + + public static function createOrUpdate(array $args, array $find_by) + { + $table = Formatting::camelCaseToSnakeCase(get_called_class()); + return self::create($args, DB::findBy($table, $find_by)[0]); + } +}