]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - vendor/composer/semver/src/Constraint/AbstractConstraint.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / vendor / composer / semver / src / Constraint / AbstractConstraint.php
1 <?php
2
3 /*
4  * This file is part of composer/semver.
5  *
6  * (c) Composer <https://github.com/composer>
7  *
8  * For the full copyright and license information, please view
9  * the LICENSE file that was distributed with this source code.
10  */
11
12 namespace Composer\Semver\Constraint;
13
14 trigger_error('The ' . __CLASS__ . ' abstract class is deprecated, there is no replacement for it, it will be removed in the next major version.', E_USER_DEPRECATED);
15
16 /**
17  * Base constraint class.
18  */
19 abstract class AbstractConstraint implements ConstraintInterface
20 {
21     /** @var string */
22     protected $prettyString;
23
24     /**
25      * @param ConstraintInterface $provider
26      *
27      * @return bool
28      */
29     public function matches(ConstraintInterface $provider)
30     {
31         if ($provider instanceof $this) {
32             // see note at bottom of this class declaration
33             return $this->matchSpecific($provider);
34         }
35
36         // turn matching around to find a match
37         return $provider->matches($this);
38     }
39
40     /**
41      * @param string $prettyString
42      */
43     public function setPrettyString($prettyString)
44     {
45         $this->prettyString = $prettyString;
46     }
47
48     /**
49      * @return string
50      */
51     public function getPrettyString()
52     {
53         if ($this->prettyString) {
54             return $this->prettyString;
55         }
56
57         return $this->__toString();
58     }
59
60     // implementations must implement a method of this format:
61     // not declared abstract here because type hinting violates parameter coherence (TODO right word?)
62     // public function matchSpecific(<SpecificConstraintType> $provider);
63 }