<?php namespace Illuminate\Support; use ArrayAccess; use Illuminate\Contracts\Support\Arrayable; use Illuminate\Contracts\Support\Jsonable; use JsonSerializable; /** * @template TKey of array-key * @template TValue * * @implements \Illuminate\Contracts\Support\Arrayable<TKey, TValue> * @implements \ArrayAccess<TKey, TValue> */ class Fluent implements Arrayable, ArrayAccess, Jsonable, JsonSerializable { /** * All of the attributes set on the fluent instance. * * @var array<TKey, TValue> */ protected $attributes = []; /** * Create a new fluent instance. * * @param iterable<TKey, TValue> $attributes * @return void */ public function __construct($attributes = []) { foreach ($attributes as $key => $value) { $this->attributes[$key] = $value; } } /** * Get an attribute from the fluent instance. * * @template TGetDefault * * @param TKey $key * @param TGetDefault|(\Closure(): TGetDefault) $default * @return TValue|TGetDefault */ public function get($key, $default = null) { if (array_key_exists($key, $this->attributes)) { return $this->attributes[$key]; } return value($default); } /** * Get the attributes from the fluent instance. * * @return array<TKey, TValue> */ public function getAttributes() { return $this->attributes; } /** * Convert the fluent instance to an array. * * @return array<TKey, TValue> */ public function toArray() { return $this->attributes; } /** * Convert the object into something JSON serializable. * * @return array<TKey, TValue> */ public function jsonSerialize(): array { return $this->toArray(); } /** * Convert the fluent instance to JSON. * * @param int $options * @return string */ public function toJson($options = 0) { return json_encode($this->jsonSerialize(), $options); } /** * Determine if the given offset exists. * * @param TKey $offset * @return bool */ public function offsetExists($offset): bool { return isset($this->attributes[$offset]); } /** * Get the value for a given offset. * * @param TKey $offset * @return TValue|null */ public function offsetGet($offset): mixed { return $this->get($offset); } /** * Set the value at the given offset. * * @param TKey $offset * @param TValue $value * @return void */ public function offsetSet($offset, $value): void { $this->attributes[$offset] = $value; } /** * Unset the value at the given offset. * * @param TKey $offset * @return void */ public function offsetUnset($offset): void { unset($this->attributes[$offset]); } /** * Handle dynamic calls to the fluent instance to set attributes. * * @param TKey $method * @param array{0: ?TValue} $parameters * @return $this */ public function __call($method, $parameters) { $this->attributes[$method] = count($parameters) > 0 ? reset($parameters) : true; return $this; } /** * Dynamically retrieve the value of an attribute. * * @param TKey $key * @return TValue|null */ public function __get($key) { return $this->get($key); } /** * Dynamically set the value of an attribute. * * @param TKey $key * @param TValue $value * @return void */ public function __set($key, $value) { $this->offsetSet($key, $value); } /** * Dynamically check if an attribute is set. * * @param TKey $key * @return bool */ public function __isset($key) { return $this->offsetExists($key); } /** * Dynamically unset an attribute. * * @param TKey $key * @return void */ public function __unset($key) { $this->offsetUnset($key); } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
Exceptions | Folder | 0755 |
|
|
Facades | Folder | 0755 |
|
|
Testing | Folder | 0755 |
|
|
Traits | Folder | 0755 |
|
|
AggregateServiceProvider.php | File | 995 B | 0644 |
|
Benchmark.php | File | 1.49 KB | 0644 |
|
Carbon.php | File | 425 B | 0644 |
|
Composer.php | File | 2.82 KB | 0644 |
|
ConfigurationUrlParser.php | File | 4.25 KB | 0644 |
|
DateFactory.php | File | 7.76 KB | 0644 |
|
Env.php | File | 2.36 KB | 0644 |
|
Fluent.php | File | 4.14 KB | 0644 |
|
HigherOrderTapProxy.php | File | 665 B | 0644 |
|
HtmlString.php | File | 1.03 KB | 0644 |
|
InteractsWithTime.php | File | 1.55 KB | 0644 |
|
Js.php | File | 3.44 KB | 0644 |
|
LICENSE.md | File | 1.05 KB | 0644 |
|
Lottery.php | File | 5.66 KB | 0644 |
|
Manager.php | File | 4.46 KB | 0644 |
|
MessageBag.php | File | 9.8 KB | 0644 |
|
MultipleInstanceManager.php | File | 4.25 KB | 0644 |
|
NamespacedItemResolver.php | File | 3.35 KB | 0644 |
|
Optional.php | File | 2.64 KB | 0644 |
|
Pluralizer.php | File | 2.84 KB | 0644 |
|
ProcessUtils.php | File | 2 KB | 0644 |
|
Reflector.php | File | 4.32 KB | 0644 |
|
ServiceProvider.php | File | 10.76 KB | 0644 |
|
Str.php | File | 36.68 KB | 0644 |
|
Stringable.php | File | 29.75 KB | 0644 |
|
Timebox.php | File | 1.62 KB | 0644 |
|
ValidatedInput.php | File | 4.61 KB | 0644 |
|
ViewErrorBag.php | File | 2.57 KB | 0644 |
|
composer.json | File | 1.74 KB | 0644 |
|
helpers.php | File | 10.08 KB | 0644 |
|