Chris@14: , Sebastian Heuer , Sebastian Bergmann Chris@14: * Chris@14: * For the full copyright and license information, please view the LICENSE Chris@14: * file that was distributed with this source code. Chris@14: */ Chris@14: Chris@14: namespace PharIo\Manifest; Chris@14: Chris@14: class ApplicationName { Chris@14: /** Chris@14: * @var string Chris@14: */ Chris@14: private $name; Chris@14: Chris@14: /** Chris@14: * ApplicationName constructor. Chris@14: * Chris@14: * @param string $name Chris@14: * Chris@14: * @throws InvalidApplicationNameException Chris@14: */ Chris@14: public function __construct($name) { Chris@14: $this->ensureIsString($name); Chris@14: $this->ensureValidFormat($name); Chris@14: $this->name = $name; Chris@14: } Chris@14: Chris@14: /** Chris@14: * @return string Chris@14: */ Chris@14: public function __toString() { Chris@14: return $this->name; Chris@14: } Chris@14: Chris@14: public function isEqual(ApplicationName $name) { Chris@14: return $this->name === $name->name; Chris@14: } Chris@14: Chris@14: /** Chris@14: * @param string $name Chris@14: * Chris@14: * @throws InvalidApplicationNameException Chris@14: */ Chris@14: private function ensureValidFormat($name) { Chris@14: if (!preg_match('#\w/\w#', $name)) { Chris@14: throw new InvalidApplicationNameException( Chris@14: sprintf('Format of name "%s" is not valid - expected: vendor/packagename', $name), Chris@14: InvalidApplicationNameException::InvalidFormat Chris@14: ); Chris@14: } Chris@14: } Chris@14: Chris@14: private function ensureIsString($name) { Chris@14: if (!is_string($name)) { Chris@14: throw new InvalidApplicationNameException( Chris@14: 'Name must be a string', Chris@14: InvalidApplicationNameException::NotAString Chris@14: ); Chris@14: } Chris@14: } Chris@14: }