| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- <?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 Iterator;
- use IteratorAggregate;
- use League\Uri\Exceptions\SyntaxError;
- use Stringable;
- /**
- * @extends IteratorAggregate<string>
- */
- interface SegmentedPathInterface extends Countable, IteratorAggregate, PathInterface
- {
- /**
- * Returns the total number of segments in the path.
- */
- public function count(): int;
- /**
- * Iterate over the path segment.
- *
- * @return Iterator<string>
- */
- public function getIterator(): Iterator;
- /**
- * Returns parent directory's path.
- */
- public function getDirname(): string;
- /**
- * Returns the path basename.
- */
- public function getBasename(): string;
- /**
- * Returns the basename extension.
- */
- public function getExtension(): string;
- /**
- * Retrieves a single path segment.
- *
- * If the segment offset has not been set, returns null.
- */
- public function get(int $offset): ?string;
- /**
- * Returns the associated key for a specific segment.
- *
- * If a value is specified only the keys associated with
- * the given value will be returned
- *
- * @return array<int>
- */
- public function keys(Stringable|string|null $segment = null): array;
- /**
- * Appends a segment to the path.
- */
- public function append(Stringable|string $segment): self;
- /**
- * Extracts a slice of $length elements starting at position $offset from the host.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the selected slice.
- *
- * If $length is null it returns all elements from $offset to the end of the Path.
- */
- public function slice(int $offset, ?int $length = null): self;
- /**
- * Prepends a segment to the path.
- */
- public function prepend(Stringable|string $segment): self;
- /**
- * Returns an instance with the modified segment.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the new segment
- *
- * If $key is non-negative, the added segment will be the segment at $key position from the start.
- * If $key is negative, the added segment will be the segment at $key position from the end.
- *
- * @throws SyntaxError If the key is invalid
- */
- public function withSegment(int $key, Stringable|string $segment): self;
- /**
- * Returns an instance without the specified segment.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the modified component
- *
- * If $key is non-negative, the removed segment will be the segment at $key position from the start.
- * If $key is negative, the removed segment will be the segment at $key position from the end.
- *
- * @throws SyntaxError If the key is invalid
- */
- public function withoutSegment(int ...$keys): self;
- /**
- * Returns an instance without duplicate delimiters.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the path component normalized by removing
- * multiple consecutive empty segment
- */
- public function withoutEmptySegments(): self;
- /**
- * Returns an instance with the specified parent directory's path.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the extension basename modified.
- */
- public function withDirname(Stringable|string $path): self;
- /**
- * Returns an instance with the specified basename.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the extension basename modified.
- */
- public function withBasename(Stringable|string $basename): self;
- /**
- * Returns an instance with the specified basename extension.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the extension basename modified.
- */
- public function withExtension(Stringable|string $extension): self;
- }
|