| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- <?php
- /**
- * League.Uri (https://uri.thephpleague.com)
- *
- * (c) Ignace Nyamagana Butera <nyamsprod@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- declare(strict_types=1);
- namespace League\Uri\Contracts;
- use Countable;
- use Deprecated;
- use Iterator;
- use IteratorAggregate;
- use Stringable;
- /**
- * @extends IteratorAggregate<array{0:string, 1:string|null}>
- *
- * @method self withoutPairByKey(string ...$keys) Returns an instance without pairs with the specified keys.
- * @method self withoutPairByValue(Stringable|string|int|bool|null ...$values) Returns an instance without pairs with the specified values.
- * @method self withoutPairByKeyValue(string $key, Stringable|string|int|bool|null $value) Returns an instance without pairs with the specified key/value pair
- * @method bool hasPair(string $key, ?string $value) Tells whether the pair exists in the query.
- * @method ?string toFormData() Returns the string representation using the applicat/www-form-urlencoded rules
- * @method ?string toRFC3986() Returns the string representation using RFC3986 rules
- */
- interface QueryInterface extends Countable, IteratorAggregate, UriComponentInterface
- {
- /**
- * Returns the query separator.
- *
- * @return non-empty-string
- */
- public function getSeparator(): string;
- /**
- * Returns the number of key/value pairs present in the object.
- */
- public function count(): int;
- /**
- * Returns an iterator allowing to go through all key/value pairs contained in this object.
- *
- * The pair is represented as an array where the first value is the pair key
- * and the second value the pair value.
- *
- * The key of each pair is a string
- * The value of each pair is a scalar or the null value
- *
- * @return Iterator<int, array{0:string, 1:string|null}>
- */
- public function getIterator(): Iterator;
- /**
- * Returns an iterator allowing to go through all key/value pairs contained in this object.
- *
- * The return type is as an Iterator where its offset is the pair key and its value the pair value.
- *
- * The key of each pair is a string
- * The value of each pair is a scalar or the null value
- *
- * @return iterable<string, string|null>
- */
- public function pairs(): iterable;
- /**
- * Tells whether a list of pair with a specific key exists.
- *
- * @see https://url.spec.whatwg.org/#dom-urlsearchparams-has
- */
- public function has(string ...$keys): bool;
- /**
- * Returns the first value associated to the given pair name.
- *
- * If no value is found null is returned
- *
- * @see https://url.spec.whatwg.org/#dom-urlsearchparams-get
- */
- public function get(string $key): ?string;
- /**
- * Returns all the values associated to the given pair name as an array or all
- * the instance pairs.
- *
- * If no value is found an empty array is returned
- *
- * @see https://url.spec.whatwg.org/#dom-urlsearchparams-getall
- *
- * @return array<int, string|null>
- */
- public function getAll(string $key): array;
- /**
- * Returns the store PHP variables as elements of an array.
- *
- * The result is similar as PHP parse_str when used with its
- * second argument with the difference that variable names are
- * not mangled.
- *
- * @see http://php.net/parse_str
- * @see https://wiki.php.net/rfc/on_demand_name_mangling
- *
- * @return array the collection of stored PHP variables or the empty array if no input is given,
- */
- public function parameters(): array;
- /**
- * Returns the value attached to the specific key.
- *
- * The result is similar to PHP parse_str with the difference that variable
- * names are not mangled.
- *
- * If a key is submitted it will return the value attached to it or null
- *
- * @see http://php.net/parse_str
- * @see https://wiki.php.net/rfc/on_demand_name_mangling
- *
- * @return mixed the collection of stored PHP variables or the empty array if no input is given,
- * the single value of a stored PHP variable or null if the variable is not present in the collection
- */
- public function parameter(string $name): mixed;
- /**
- * Tells whether a list of variable with specific names exists.
- *
- * @see https://url.spec.whatwg.org/#dom-urlsearchparams-has
- */
- public function hasParameter(string ...$names): bool;
- /**
- * Returns the RFC1738 encoded query.
- */
- public function toRFC1738(): ?string;
- /**
- * Returns an instance with a different separator.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the query component with a different separator
- */
- public function withSeparator(string $separator): self;
- /**
- * Returns an instance with the new pairs set to it.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the modified query
- *
- * @see ::withPair
- */
- public function merge(Stringable|string $query): self;
- /**
- * Returns an instance with the new pairs appended to it.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the modified query
- *
- * If the pair already exists the value will be added to it.
- */
- public function append(Stringable|string $query): self;
- /**
- * Returns a new instance with a specified key/value pair appended as a new pair.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the modified query
- */
- public function appendTo(string $key, Stringable|string|int|bool|null $value): self;
- /**
- * Sorts the query string by offset, maintaining offset to data correlations.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the modified query
- *
- * @see https://url.spec.whatwg.org/#dom-urlsearchparams-sort
- */
- public function sort(): self;
- /**
- * Returns an instance without duplicate key/value pair.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the query component normalized by removing
- * duplicate pairs whose key/value are the same.
- */
- public function withoutDuplicates(): self;
- /**
- * Returns an instance without empty key/value where the value is the null value.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the query component normalized by removing
- * empty pairs.
- *
- * A pair is considered empty if its value is equal to the null value
- */
- public function withoutEmptyPairs(): self;
- /**
- * Returns an instance where numeric indices associated to PHP's array like key are removed.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the query component normalized so that numeric indexes
- * are removed from the pair key value.
- *
- * i.e.: toto[3]=bar[3]&foo=bar becomes toto[]=bar[3]&foo=bar
- */
- public function withoutNumericIndices(): self;
- /**
- * Returns an instance with a new key/value pair added to it.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the modified query
- *
- * If the pair already exists the value will replace the existing value.
- *
- * @see https://url.spec.whatwg.org/#dom-urlsearchparams-set
- */
- public function withPair(string $key, Stringable|string|int|float|bool|null $value): self;
- /**
- * DEPRECATION WARNING! This method will be removed in the next major point release.
- *
- * @deprecated Since version 7.3.0
- * @codeCoverageIgnore
- * @see QueryInterface::withoutPairByKey()
- *
- * Returns an instance without the specified keys.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the modified component
- */
- #[Deprecated(message:'use League\Uri\Contracts\QueryInterface::withoutPairByKey() instead', since:'league/uri-interfaces:7.3.0')]
- public function withoutPair(string ...$keys): self;
- /**
- * Returns an instance without the specified params.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the modified component without PHP's value.
- * PHP's mangled is not taken into account.
- */
- public function withoutParameters(string ...$names): self;
- }
|