/** * Creates a new configuration file. * * @param string|null $path The path where the configuration file is stored * or `null` if this configuration is not stored * on the file system. * @param Config $baseConfig The configuration that the configuration will * inherit its values from. * * @throws InvalidArgumentException If the path is not a string or empty. */ public function __construct($path = null, Config $baseConfig = null) { Assert::nullOrString($path, 'The path to the configuration file should be a string or null. Got: %s'); Assert::nullOrNotEmpty($path, 'The path to the configuration file should not be empty.'); // Inherit from default configuration $this->config = new Config($baseConfig); $this->path = $path; }
/** * {@inheritdoc} */ public function fromJson($jsonData, array $options = array()) { $path = isset($options['path']) ? $options['path'] : null; $baseConfig = isset($options['baseConfig']) ? $options['baseConfig'] : null; Assert::isInstanceOf($jsonData, 'stdClass'); Assert::nullOrString($path, 'The "path" option should be null or a string. Got: %s'); Assert::nullOrIsInstanceOf($baseConfig, 'Puli\\Manager\\Api\\Config\\Config', 'The "baseConfig" option should be null or an instance of %2$s. Got: %s'); $moduleFile = new RootModuleFile(null, $path, $baseConfig); $this->addJsonToModuleFile($jsonData, $moduleFile); $this->addJsonToRootModuleFile($jsonData, $moduleFile); return $moduleFile; }
/** * Creates a binding type descriptor. * * @param string $name The name of the type. * @param string|null $description A human-readable * description of the type. * @param BindingParameterDescriptor[] $parameters The parameters. * * @see BindingType */ public function __construct($name, $description = null, array $parameters = array()) { Assert::typeName($name); Assert::nullOrString($description, 'The description must be a string or null. Got: %s'); Assert::nullOrNotEmpty($description, 'The description must not be empty.'); Assert::allIsInstanceOf($parameters, __NAMESPACE__ . '\\BindingParameterDescriptor'); $this->name = $name; $this->description = $description; foreach ($parameters as $parameter) { $this->parameters[$parameter->getName()] = $parameter; } }
/** * Creates the parameter. * * @param string $name The parameter name. * @param int $flags A bitwise combination of the flag * constants in this class. * @param null $defaultValue The default value of the parameter. Must * only be set for optional parameters. * @param string|null $description A human-readable description. */ public function __construct($name, $flags = self::OPTIONAL, $defaultValue = null, $description = null) { Assert::parameterName($name); Assert::nullOrInteger($flags, 'The parameter "$flags" must be an integer or null. Got: %s'); Assert::nullOrParameterValue($defaultValue); Assert::nullOrString($description, 'The parameter description must be a string or null. Got: %s'); Assert::nullOrNotEmpty($description, 'The parameter description must not be empty.'); if ($flags & self::REQUIRED && null !== $defaultValue) { throw new RuntimeException('Required parameters cannot have default values.'); } $this->name = $name; $this->flags = (int) $flags; $this->defaultValue = $defaultValue; $this->description = $description; }
/** * {@inheritdoc} */ public function fromJson($jsonData, array $options = array()) { $path = isset($options['path']) ? $options['path'] : null; $baseConfig = isset($options['baseConfig']) ? $options['baseConfig'] : null; Assert::isInstanceOf($jsonData, 'stdClass'); Assert::nullOrString($path, 'The "path" option should be null or a string. Got: %s'); Assert::nullOrIsInstanceOf($baseConfig, 'Puli\\Manager\\Api\\Config\\Config', 'The "baseConfig" option should be null or an instance of %2$s. Got: %s'); $configFile = new ConfigFile($path, $baseConfig); $config = $configFile->getConfig(); $jsonData = $this->objectsToArrays($jsonData); foreach ($jsonData as $key => $value) { $config->set($key, $value); } return $configFile; }
/** * {@inheritdoc} */ public function hasBindingType($typeName, $packageName = null) { Assert::nullOrString($packageName, 'The package name must be a string or null. Got: %s'); $this->assertPackagesLoaded(); return $this->typeDescriptors->contains($typeName, $packageName); }
/** * {@inheritdoc} */ public function hasTypeDescriptor($typeName, $moduleName = null) { Assert::nullOrString($moduleName, 'The module name must be a string or null. Got: %s'); $this->assertModulesLoaded(); return $this->typeDescriptors->contains($typeName, $moduleName); }