123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- <?php
- /*
- * This file is part of Composer.
- *
- * (c) Nils Adermann <naderman@naderman.de>
- * Jordi Boggiano <j.boggiano@seld.be>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Composer\Package;
- use Composer\Package\LinkConstraint\LinkConstraintInterface;
- /**
- * Represents a link between two packages, represented by their names
- *
- * @author Nils Adermann <naderman@naderman.de>
- */
- class Link
- {
- /**
- * @var string
- */
- protected $source;
- /**
- * @var string
- */
- protected $target;
- /**
- * @var LinkConstraintInterface|null
- */
- protected $constraint;
- /**
- * @var string
- */
- protected $description;
- /**
- * @var string|null
- */
- protected $prettyConstraint;
- /**
- * Creates a new package link.
- *
- * @param string $source
- * @param string $target
- * @param LinkConstraintInterface|null $constraint Constraint applying to the target of this link
- * @param string $description Used to create a descriptive string representation
- * @param string|null $prettyConstraint
- */
- public function __construct($source, $target, LinkConstraintInterface $constraint = null, $description = 'relates to', $prettyConstraint = null)
- {
- $this->source = strtolower($source);
- $this->target = strtolower($target);
- $this->constraint = $constraint;
- $this->description = $description;
- $this->prettyConstraint = $prettyConstraint;
- }
- /**
- * @return string
- */
- public function getSource()
- {
- return $this->source;
- }
- /**
- * @return string
- */
- public function getTarget()
- {
- return $this->target;
- }
- /**
- * @return LinkConstraintInterface|null
- */
- public function getConstraint()
- {
- return $this->constraint;
- }
- /**
- * @throws \UnexpectedValueException If no pretty constraint was provided
- * @return string
- */
- public function getPrettyConstraint()
- {
- if (null === $this->prettyConstraint) {
- throw new \UnexpectedValueException(sprintf('Link %s has been misconfigured and had no prettyConstraint given.', $this));
- }
- return $this->prettyConstraint;
- }
- /**
- * @return string
- */
- public function __toString()
- {
- return $this->source.' '.$this->description.' '.$this->target.' ('.$this->constraint.')';
- }
- /**
- * @param PackageInterface $sourcePackage
- * @return string
- */
- public function getPrettyString(PackageInterface $sourcePackage)
- {
- return $sourcePackage->getPrettyString().' '.$this->description.' '.$this->target.' '.$this->constraint->getPrettyString().'';
- }
- }
|