/** * Adds an attribute to the name. * * @param string $name The attribute name. Must start with a letter and * contain letters, digits and hyphens only. * @param string $value The attribute value. Any non-empty string is * allowed. * * @see merge() */ public function add($name, $value) { Assert::string($name, 'The attribute name must be a string. Got: %s'); Assert::notEmpty($name, 'The attribute name must not be empty.'); Assert::startsWithLetter($name, 'The attribute name %s must start with a letter.'); Assert::true((bool) preg_match('~^[a-zA-Z][a-zA-Z0-9\\-]*$~', $name), sprintf('The attribute name must contain letters, numbers and hyphens only. Got: "%s"', $name)); Assert::string($value, 'The attribute value must be a string. Got: %s'); $this->attributes[$name] = $value; }
/** * Writes a {@link Clazz} instance to a file. * * The directory of the class must have been set. * * @param Clazz $class The class to write. */ public function writeClass(Clazz $class) { Assert::notEmpty($class->getDirectory(), 'The directory of the written class must not be empty.'); ob_start(); require __DIR__ . '/../../res/template/Class.tpl.php'; $source = "<?php\n" . ob_get_clean(); if (!file_exists($class->getDirectory())) { mkdir($class->getDirectory(), 0777, true); } file_put_contents($class->getFilePath(), $source); }
/** * {@inheritdoc} */ public function write($path, $contents) { Assert::notEmpty($path, 'Cannot write to an empty path.'); if (is_dir($path)) { throw new StorageException(sprintf('Cannot write %s: Is a directory.', $path)); } if (!is_dir($dir = Path::getDirectory($path))) { $filesystem = new Filesystem(); $filesystem->mkdir($dir); } if (false === ($numBytes = @file_put_contents($path, $contents))) { $error = error_get_last(); throw new StorageException(sprintf('Could not write %s: %s.', $path, $error['message'])); } return $numBytes; }
/** * Creates a new path mapping. * * @param string $repositoryPath The repository path. * @param string|string[] $pathReferences The path references. * * @throws InvalidArgumentException If any of the arguments is invalid. */ public function __construct($repositoryPath, $pathReferences) { Assert::path($repositoryPath); $pathReferences = (array) $pathReferences; Assert::notEmpty($pathReferences, 'At least one filesystem path must be passed.'); Assert::allString($pathReferences, 'The filesystem paths must be strings. Got: %s'); Assert::allNotEmpty($pathReferences, 'The filesystem paths must not be empty.'); $this->repositoryPath = $repositoryPath; $this->pathReferences = $pathReferences; }