aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/league/uri-interfaces/Contracts/SegmentedPathInterface.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/league/uri-interfaces/Contracts/SegmentedPathInterface.php')
-rw-r--r--vendor/league/uri-interfaces/Contracts/SegmentedPathInterface.php149
1 files changed, 149 insertions, 0 deletions
diff --git a/vendor/league/uri-interfaces/Contracts/SegmentedPathInterface.php b/vendor/league/uri-interfaces/Contracts/SegmentedPathInterface.php
new file mode 100644
index 000000000..fa5a78d22
--- /dev/null
+++ b/vendor/league/uri-interfaces/Contracts/SegmentedPathInterface.php
@@ -0,0 +1,149 @@
+<?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;
+}