From 52b077a48c743ba4d08ac00520a0bf1ef6deef5f Mon Sep 17 00:00:00 2001 From: Thomas Lange Date: Fri, 24 Feb 2017 21:27:59 +0100 Subject: Initial commit. --- core/namespace/Attribute.php | 74 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 core/namespace/Attribute.php (limited to 'core/namespace/Attribute.php') diff --git a/core/namespace/Attribute.php b/core/namespace/Attribute.php new file mode 100644 index 0000000..69998e0 --- /dev/null +++ b/core/namespace/Attribute.php @@ -0,0 +1,74 @@ +{$attribute} = $value; + } + + #=============================================================================== + # Get attribute + #=============================================================================== + public function get($attribute) { + return $this->{$attribute} ?? NULL; + } + + #=============================================================================== + # Get array with not FALSE attributes + #=============================================================================== + protected function getFilteredAttributes(): array { + return array_filter(get_object_vars($this), function($value) { + return $value !== FALSE; + }); + } + + #=============================================================================== + # Insert database item + #=============================================================================== + public function databaseINSERT(\Database $Database): bool { + $part[0] = ''; + $part[1] = ''; + + $attributes = $this->getFilteredAttributes(); + + foreach($attributes as $column => $value) { + $part[0] .= "{$column},"; + $part[1] .= '?,'; + } + + $part[0] = rtrim($part[0], ','); + $part[1] = rtrim($part[1], ','); + + $Statement = $Database->prepare('INSERT INTO '.static::TABLE." ({$part[0]}) VALUES ({$part[1]})"); + return $Statement->execute(array_values($attributes)); + } + + #=============================================================================== + # Update database item + #=============================================================================== + public function databaseUPDATE(\Database $Database): bool { + $part = ''; + + $attributes = $this->getFilteredAttributes(); + + foreach($attributes as $column => $value) { + $part .= "{$column} = ?,"; + } + + $part = rtrim($part, ','); + + $Statement = $Database->prepare('UPDATE '.static::TABLE.' SET '.$part.' WHERE id = '.(int) $this->get('id')); + return $Statement->execute(array_values($attributes)); + } + + #=============================================================================== + # Delete database item + #=============================================================================== + public function databaseDELETE(\Database $Database): bool { + $Statement = $Database->prepare('DELETE FROM '.static::TABLE.' WHERE id = ?'); + return $Statement->execute([$this->get('id')]); + } +} +?> \ No newline at end of file -- cgit v1.2.3