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