From 7635f455ab28e18a305ba439c8f316f7154b8640 Mon Sep 17 00:00:00 2001 From: Hugo Sales Date: Fri, 7 Aug 2020 02:04:53 +0000 Subject: [PATCH] [DB] Add entity base class to allow sharing methods such as 'create' --- src/Core/Entity.php | 49 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/Core/Entity.php 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]); + } +}