protected function parseSource($data) { $source = new Source(); if (array_key_exists('extensions', $data)) { $source->setExtensions($data['extensions']); } if (array_key_exists('name', $data)) { $source->setName($data['name']); } if (array_key_exists('paths', $data)) { $source->setPaths($data['paths']); } if (array_key_exists('sources', $data)) { if (is_bool($data['sources'])) { $source->setExpand($data['sources']); } else { $sources = []; foreach ($data['sources'] as $sourceData) { $sources[] = $this->parseSource($sourceData); } $source->setSources($sources); } } return $source; }