mapper = [ 'amount-of-money' => [ 'name' => 'Amount Of Money', ], 'credit-card-number' => [ 'name' => 'Credit Card Number', ], 'distance' => [ 'name' => 'Distance', ], 'duration' => [ 'name' => 'Duration', ], 'email' => [ 'name' => 'Email', ], 'numeral' => [ 'name' => 'Numeral', ], 'ordinal' => [ 'name' => 'Ordinal', ], 'phone-number' => [ 'name' => 'Phone Number', ], 'quantity' => [ 'name' => 'Quantity', ], 'temperature' => [ 'name' => 'Temperature', ], 'time' => [ 'name' => 'Time', ], 'url' => [ 'name' => 'URL', ], 'volume' => [ 'name' => 'Volume', ], ]; } public function getSearchers() { return array_keys($this->mapper); } public function all() { $items = []; foreach ($this->mapper as $key => $value) { $items[$key] = [ 'id' => $key, 'name' => $value['name'], ]; } return $items; } public function has($id) { return in_array($id, $this->getSearchers()); } public function get($id) { if ( ! $this->has($id)) { return null; } return array_merge($this->mapper[$id], [ 'id' => $id, 'description' => '', ]); } }