/** * Add the evolution to the decodedTaf's entity * * @param DecodedTaf $decoded_taf * @param Evolution $evolution * @param array $result * @param string $entity_name */ private function addEvolution($decoded_taf, $evolution, $result, $entity_name) { // clone the evolution entity /** @var Evolution $newEvolution */ $new_evolution = clone $evolution; // add the new entity to it $new_evolution->setEntity($result[$entity_name]); // possibly add cavok to it if ($entity_name == 'visibility' && $this->with_cavok == true) { $new_evolution->setCavok(true); } // get the original entity from the decoded taf or a new one decoded taf doesn't contain it yet $getter_name = 'get' . ucfirst($entity_name); $setter_name = 'set' . ucfirst($entity_name); $decoded_entity = $decoded_taf->{$getter_name}(); if ($decoded_entity == null || $entity_name == 'clouds') { // that entity is not in the decoded_taf yet, or it's a cloud layer which is a special case $decoded_entity = $this->instantiateEntity($entity_name); } // add the new evolution to that entity $decoded_entity->addEvolution($new_evolution); // update the decoded taf's entity or add the new one to it if ($entity_name == 'clouds') { $decoded_taf->addCloud($decoded_entity); } else { $decoded_taf->{$setter_name}($decoded_entity); } }