protected function addJsonToModuleFile(stdClass $jsonData, ModuleFile $moduleFile) { if (isset($jsonData->name)) { $moduleFile->setModuleName($jsonData->name); } if (isset($jsonData->resources)) { foreach ($jsonData->resources as $path => $relativePaths) { $moduleFile->addPathMapping(new PathMapping($path, (array) $relativePaths)); } } if (isset($jsonData->bindings)) { foreach ($jsonData->bindings as $uuid => $bindingData) { $binding = null; $class = isset($bindingData->_class) ? $bindingData->_class : 'Puli\\Discovery\\Binding\\ResourceBinding'; // Move this code to external classes to allow use of custom // bindings switch ($class) { case 'Puli\\Discovery\\Binding\\ClassBinding': $binding = new ClassBinding($bindingData->class, $bindingData->type, isset($bindingData->parameters) ? (array) $bindingData->parameters : array(), Uuid::fromString($uuid)); break; case 'Puli\\Discovery\\Binding\\ResourceBinding': $binding = new ResourceBinding($bindingData->query, $bindingData->type, isset($bindingData->parameters) ? (array) $bindingData->parameters : array(), isset($bindingData->language) ? $bindingData->language : 'glob', Uuid::fromString($uuid)); break; default: continue 2; } $moduleFile->addBindingDescriptor(new BindingDescriptor($binding)); } } if (isset($jsonData->{'binding-types'})) { foreach ((array) $jsonData->{'binding-types'} as $typeName => $data) { $parameters = array(); $parameterDescriptions = array(); if (isset($data->parameters)) { foreach ((array) $data->parameters as $parameterName => $parameterData) { $required = isset($parameterData->required) ? $parameterData->required : false; $parameters[] = new BindingParameter($parameterName, $required ? BindingParameter::REQUIRED : BindingParameter::OPTIONAL, isset($parameterData->default) ? $parameterData->default : null); if (isset($parameterData->description)) { $parameterDescriptions[$parameterName] = $parameterData->description; } } } $moduleFile->addTypeDescriptor(new BindingTypeDescriptor(new BindingType($typeName, $parameters), isset($data->description) ? $data->description : null, $parameterDescriptions)); } } if (isset($jsonData->depend)) { $moduleFile->setDependencies($jsonData->depend); } if (isset($jsonData->extra)) { $moduleFile->setExtraKeys((array) $jsonData->extra); } }