/**
  *
  * @param integer $gewestId Zie de KVDgis_Crab2Gateway::GEWEST constanten.
  * @param integer $sorteerVeld Zie de KVDgis_Crab2Gateway::GEM_SORT constanten.
  * @return array Associatieve array met de volgende sleutels:;
  * <ul>
  *  <li>gemeenteNaam: Naam van de gemeente.</li>
  *  <li>gemeenteId: Het Crab Id van de gemeente. Dit is niet gelijk aan de NIS-code.</li>
  *  <li>taalCode: De eerste taal in de gemeente.</li>
  *  <li>taalCodeGemeenteNaam: De taalvode van de gemeetenaam.</li>
  * </ul>
  * @throws IllegalArgumentException Indien er verkeerder parameters worden opgegeven.
  * @throws RuntimeException Indien de lijst niet geladen kan worden
  */
 public function listGemeentenByGewestId($gewestId = self::GEWEST_VLAANDEREN, $sorteerVeld = self::GEM_SORT_ID)
 {
     $params = new stdClass();
     if ($gewestId < 1 || $gewestId > 3) {
         throw new IllegalArgumentException("De parameter gewestId van de functie listGemeentenByGewestId moet tussen 1 en 3 liggen.");
     }
     if ($sorteerVeld < 1 || $sorteerVeld > 6) {
         throw new IllegalArgumentException("De parameter sorteerVeld van de functie listGemeentenByGewestId moet tussen 1 en 6 liggen.");
     }
     $functionParameters = func_get_args();
     $result = $this->_cache->cacheGet($this->getCacheName(__FUNCTION__), $functionParameters);
     if ($result != false) {
         return unserialize($result);
     }
     $params->GewestId = $gewestId;
     $params->SorteerVeld = $sorteerVeld;
     $paramsWrapper = new SoapParam($params, "ListGemeentenByGewestId");
     try {
         $result = $this->_client->ListGemeentenByGewestId($paramsWrapper);
         $gemeenteItems = $result->ListGemeentenByGewestIdResult->GemeenteItem;
     } catch (SoapFault $e) {
         throw new RuntimeException('Kon de lijst met gemeentes niet laden.');
     }
     $gemeenten = array();
     foreach ($gemeenteItems as $gemeente) {
         $gemeenteArray = array();
         $gemeenteArray['gemeenteNaam'] = (string) $gemeente->GemeenteNaam;
         $gemeenteArray['gemeenteId'] = (int) $gemeente->GemeenteId;
         $gemeenteArray['taalCode'] = (string) $gemeente->TaalCode;
         $gemeenteArray['taalCodeGemeenteNaam'] = (string) $gemeente->TaalCodeGemeenteNaam;
         $gemeenten[] = $gemeenteArray;
     }
     $this->_cache->cachePut($this->getCacheName(__FUNCTION__), $functionParameters, serialize($gemeenten));
     return $gemeenten;
 }