database = $in_database; $this->get_static = function($name) { return self::$$name; }; } public function is_valid_type(string $type_name) : boolean { $s = $this->get_static; return !empty($this->database->query( "SELECT {$s("column_id")} FROM {$s("table_name")};" )->fetchColumn()); } public function get_friendly_name(string $type_name) : string { // TODO: Cache results here? Maybe https://packagist.org/packages/thumbtack/querycache will be of some use $s = $this->get_static; return $this->database->query( "SELECT {$s("column_friendly_text")} FROM {$s("table_name")} WHERE $this->column_id = :type_name;", [ "type_name" => $type_name ] )->fetchColumn(); } public function get_all_types() { $s = $this->get_static; return $this->database->query( "SELECT * FROM {$s("table_name")}" )->fetchAll(); } }