. // }}} namespace App\Core; use App\Core\DB\DB; use App\Util\Formatting; use DateTime; 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)) { $set = 'set' . Formatting::snakeCaseToCamelCase($prop); $obj->{$set}($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]); } }