/**
  * Creates a binding type descriptor.
  *
  * @param BindingType $type                  The described type.
  * @param string|null $description           A human-readable description of
  *                                           the type.
  * @param string[]    $parameterDescriptions Human-readable descriptions
  *                                           indexed by the type's parameter
  *                                           names.
  *
  * @throws NoSuchParameterException If a description is passed for an unset
  *                                  parameter.
  */
 public function __construct(BindingType $type, $description = null, array $parameterDescriptions = array())
 {
     Assert::nullOrStringNotEmpty($description, 'The description must be a non-empty string or null. Got: %s');
     Assert::allStringNotEmpty($parameterDescriptions, 'The parameter description must be a non-empty string. Got: %s');
     $this->type = $type;
     $this->description = $description;
     foreach ($parameterDescriptions as $parameterName => $parameterDescription) {
         if (!$type->hasParameter($parameterName)) {
             throw NoSuchParameterException::forParameterName($parameterName, $type->getName());
         }
         $this->parameterDescriptions[$parameterName] = $parameterDescription;
     }
 }
Example #2
0
 /**
  * Creates a new installer descriptor.
  *
  * @param string               $name        The installer name.
  * @param string               $className   The fully-qualified class name
  *                                          of the installer.
  * @param string|null          $description The description of the installer.
  * @param InstallerParameter[] $parameters  The installer parameters.
  */
 public function __construct($name, $className, $description = null, array $parameters = array())
 {
     Assert::stringNotEmpty($name, 'The installer name must be a non-empty string. Got: %s');
     Assert::stringNotEmpty($className, 'The installer class must be a non-empty string. Got: %s');
     Assert::nullOrStringNotEmpty($description, 'The installer description must be a non-empty string or null. Got: %s');
     Assert::allIsInstanceOf($parameters, __NAMESPACE__ . '\\InstallerParameter');
     $this->name = $name;
     $this->className = $className;
     $this->description = $description;
     foreach ($parameters as $parameter) {
         $this->parameters[$parameter->getName()] = $parameter;
     }
 }
Example #3
0
 /**
  * Creates the import statement.
  *
  * @param string      $className The fully-qualified imported class name.
  * @param string|null $alias     If not `null`, the class will be imported
  *                               with the given alias.
  */
 public function __construct($className, $alias = null)
 {
     Assert::stringNotEmpty($className, 'The imported class name must be a non-empty string. Got: %s');
     Assert::nullOrStringNotEmpty($className, 'The import alias must be a non-empty string or null. Got: %s');
     $pos = strrpos($className, '\\');
     if (false === $pos) {
         $this->namespaceName = '';
         $this->shortClassName = $className;
     } else {
         $this->namespaceName = substr($className, 0, $pos);
         $this->shortClassName = substr($className, $pos + 1);
     }
     $this->alias = $alias;
 }
Example #4
0
 /**
  * {@inheritdoc}
  */
 public function refreshFactoryClass($path = null, $className = null)
 {
     Assert::nullOrStringNotEmpty($path, 'The path to the generated factory file must be a non-empty string or null. Got: %s');
     Assert::nullOrStringNotEmpty($className, 'The class name of the generated factory must be a non-empty string or null. Got: %s');
     $path = Path::makeAbsolute($path ?: $this->config->get(Config::FACTORY_OUT_FILE), $this->rootDir);
     $className = $className ?: $this->config->get(Config::FACTORY_OUT_CLASS);
     if (!$this->config->get(Config::FACTORY_AUTO_GENERATE)) {
         return;
     }
     if (!file_exists($path)) {
         $this->generateFactoryClass($path, $className);
         return;
     }
     $rootModuleFile = $this->context->getRootModuleFile()->getPath();
     if (!file_exists($rootModuleFile)) {
         return;
     }
     // Regenerate file if the configuration has changed and
     // auto-generation is enabled
     clearstatcache(true, $rootModuleFile);
     $lastConfigChange = filemtime($rootModuleFile);
     $configFile = $this->context->getConfigFile() ? $this->context->getConfigFile()->getPath() : '';
     if (file_exists($configFile)) {
         clearstatcache(true, $configFile);
         $lastConfigChange = max(filemtime($configFile), $lastConfigChange);
     }
     clearstatcache(true, $path);
     $lastFactoryUpdate = filemtime($path);
     if ($lastConfigChange > $lastFactoryUpdate) {
         $this->generateFactoryClass($path, $className);
     }
 }