gluon-web-remote

Web remote Administration for big size of gluon routers
git clone git://archive.git.mtrnord.blog/MTRNord/gluon-web-remote.git
Log | Files | Refs | README

Argument.php (4446B)


      1 <?php
      2 
      3 /*
      4  * This file is part of the Prophecy.
      5  * (c) Konstantin Kudryashov <ever.zet@gmail.com>
      6  *     Marcello Duarte <marcello.duarte@gmail.com>
      7  *
      8  * For the full copyright and license information, please view the LICENSE
      9  * file that was distributed with this source code.
     10  */
     11 
     12 namespace Prophecy;
     13 
     14 use Prophecy\Argument\Token;
     15 
     16 /**
     17  * Argument tokens shortcuts.
     18  *
     19  * @author Konstantin Kudryashov <ever.zet@gmail.com>
     20  */
     21 class Argument
     22 {
     23     /**
     24      * Checks that argument is exact value or object.
     25      *
     26      * @param mixed $value
     27      *
     28      * @return Token\ExactValueToken
     29      */
     30     public static function exact($value)
     31     {
     32         return new Token\ExactValueToken($value);
     33     }
     34 
     35     /**
     36      * Checks that argument is of specific type or instance of specific class.
     37      *
     38      * @param string $type Type name (`integer`, `string`) or full class name
     39      *
     40      * @return Token\TypeToken
     41      */
     42     public static function type($type)
     43     {
     44         return new Token\TypeToken($type);
     45     }
     46 
     47     /**
     48      * Checks that argument object has specific state.
     49      *
     50      * @param string $methodName
     51      * @param mixed  $value
     52      *
     53      * @return Token\ObjectStateToken
     54      */
     55     public static function which($methodName, $value)
     56     {
     57         return new Token\ObjectStateToken($methodName, $value);
     58     }
     59 
     60     /**
     61      * Checks that argument matches provided callback.
     62      *
     63      * @param callable $callback
     64      *
     65      * @return Token\CallbackToken
     66      */
     67     public static function that($callback)
     68     {
     69         return new Token\CallbackToken($callback);
     70     }
     71 
     72     /**
     73      * Matches any single value.
     74      *
     75      * @return Token\AnyValueToken
     76      */
     77     public static function any()
     78     {
     79         return new Token\AnyValueToken;
     80     }
     81 
     82     /**
     83      * Matches all values to the rest of the signature.
     84      *
     85      * @return Token\AnyValuesToken
     86      */
     87     public static function cetera()
     88     {
     89         return new Token\AnyValuesToken;
     90     }
     91 
     92     /**
     93      * Checks that argument matches all tokens
     94      *
     95      * @param mixed ... a list of tokens
     96      *
     97      * @return Token\LogicalAndToken
     98      */
     99     public static function allOf()
    100     {
    101         return new Token\LogicalAndToken(func_get_args());
    102     }
    103 
    104     /**
    105      * Checks that argument array or countable object has exact number of elements.
    106      *
    107      * @param integer $value array elements count
    108      *
    109      * @return Token\ArrayCountToken
    110      */
    111     public static function size($value)
    112     {
    113         return new Token\ArrayCountToken($value);
    114     }
    115 
    116     /**
    117      * Checks that argument array contains (key, value) pair
    118      *
    119      * @param mixed $key   exact value or token
    120      * @param mixed $value exact value or token
    121      *
    122      * @return Token\ArrayEntryToken
    123      */
    124     public static function withEntry($key, $value)
    125     {
    126         return new Token\ArrayEntryToken($key, $value);
    127     }
    128 
    129     /**
    130      * Checks that arguments array entries all match value
    131      *
    132      * @param mixed $value
    133      *
    134      * @return Token\ArrayEveryEntryToken
    135      */
    136     public static function withEveryEntry($value)
    137     {
    138         return new Token\ArrayEveryEntryToken($value);
    139     }
    140 
    141     /**
    142      * Checks that argument array contains value
    143      *
    144      * @param mixed $value
    145      *
    146      * @return Token\ArrayEntryToken
    147      */
    148     public static function containing($value)
    149     {
    150         return new Token\ArrayEntryToken(self::any(), $value);
    151     }
    152 
    153     /**
    154      * Checks that argument array has key
    155      *
    156      * @param mixed $key exact value or token
    157      *
    158      * @return Token\ArrayEntryToken
    159      */
    160     public static function withKey($key)
    161     {
    162         return new Token\ArrayEntryToken($key, self::any());
    163     }
    164 
    165     /**
    166      * Checks that argument does not match the value|token.
    167      *
    168      * @param mixed $value either exact value or argument token
    169      *
    170      * @return Token\LogicalNotToken
    171      */
    172     public static function not($value)
    173     {
    174         return new Token\LogicalNotToken($value);
    175     }
    176 
    177     /**
    178      * @param string $value
    179      *
    180      * @return Token\StringContainsToken
    181      */
    182     public static function containingString($value)
    183     {
    184         return new Token\StringContainsToken($value);
    185     }
    186 
    187     /**
    188      * Checks that argument is identical value.
    189      *
    190      * @param mixed $value
    191      *
    192      * @return Token\IdenticalValueToken
    193      */
    194     public static function is($value)
    195     {
    196         return new Token\IdenticalValueToken($value);
    197     }
    198 }