layfi-earn/vendor/illuminate/support/ValidatedInput.php

242 lines
4.5 KiB
PHP
Raw Permalink Normal View History

2025-01-27 20:49:47 +08:00
<?php
namespace Illuminate\Support;
use ArrayIterator;
use Illuminate\Contracts\Support\ValidatedData;
use Illuminate\Support\Traits\InteractsWithData;
use Symfony\Component\VarDumper\VarDumper;
use Traversable;
class ValidatedInput implements ValidatedData
{
use InteractsWithData;
/**
* The underlying input.
*
* @var array
*/
protected $input;
/**
* Create a new validated input container.
*
* @param array $input
* @return void
*/
public function __construct(array $input)
{
$this->input = $input;
}
/**
* Merge the validated input with the given array of additional data.
*
* @param array $items
* @return static
*/
public function merge(array $items)
{
return new static(array_merge($this->all(), $items));
}
/**
* Get the raw, underlying input array.
*
* @param array|mixed|null $keys
* @return array
*/
public function all($keys = null)
{
if (! $keys) {
return $this->input;
}
$input = [];
foreach (is_array($keys) ? $keys : func_get_args() as $key) {
Arr::set($input, $key, Arr::get($this->input, $key));
}
return $input;
}
/**
* Retrieve data from the instance.
*
* @param string|null $key
* @param mixed $default
* @return mixed
*/
protected function data($key = null, $default = null)
{
return $this->input($key, $default);
}
/**
* Get the keys for all of the input.
*
* @return array
*/
public function keys()
{
return array_keys($this->input());
}
/**
* Retrieve an input item from the validated inputs.
*
* @param string|null $key
* @param mixed $default
* @return mixed
*/
public function input($key = null, $default = null)
{
return data_get(
$this->all(), $key, $default
);
}
/**
* Dump the validated inputs items and end the script.
*
* @param mixed ...$keys
* @return never
*/
public function dd(...$keys)
{
$this->dump(...$keys);
exit(1);
}
/**
* Dump the items.
*
* @param mixed $keys
* @return $this
*/
public function dump($keys = [])
{
$keys = is_array($keys) ? $keys : func_get_args();
VarDumper::dump(count($keys) > 0 ? $this->only($keys) : $this->all());
return $this;
}
/**
* Get the instance as an array.
*
* @return array
*/
public function toArray()
{
return $this->all();
}
/**
* Dynamically access input data.
*
* @param string $name
* @return mixed
*/
public function __get($name)
{
return $this->input($name);
}
/**
* Dynamically set input data.
*
* @param string $name
* @param mixed $value
* @return mixed
*/
public function __set($name, $value)
{
$this->input[$name] = $value;
}
/**
* Determine if an input item is set.
*
* @return bool
*/
public function __isset($name)
{
return $this->exists($name);
}
/**
* Remove an input item.
*
* @param string $name
* @return void
*/
public function __unset($name)
{
unset($this->input[$name]);
}
/**
* Determine if an item exists at an offset.
*
* @param mixed $key
* @return bool
*/
public function offsetExists($key): bool
{
return $this->exists($key);
}
/**
* Get an item at a given offset.
*
* @param mixed $key
* @return mixed
*/
public function offsetGet($key): mixed
{
return $this->input($key);
}
/**
* Set the item at a given offset.
*
* @param mixed $key
* @param mixed $value
* @return void
*/
public function offsetSet($key, $value): void
{
if (is_null($key)) {
$this->input[] = $value;
} else {
$this->input[$key] = $value;
}
}
/**
* Unset the item at a given offset.
*
* @param string $key
* @return void
*/
public function offsetUnset($key): void
{
unset($this->input[$key]);
}
/**
* Get an iterator for the input.
*
* @return \ArrayIterator
*/
public function getIterator(): Traversable
{
return new ArrayIterator($this->input);
}
}