/vendor/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithInput.php
https://bitbucket.org/rogersantosferreira/bigfeel_web · PHP · 375 lines · 172 code · 52 blank · 151 comment · 15 complexity · 5e8280720a3249b255074d7400ebea1b MD5 · raw file
- <?php
- namespace Illuminate\Http\Concerns;
- use stdClass;
- use SplFileInfo;
- use Illuminate\Support\Arr;
- use Illuminate\Support\Str;
- use Illuminate\Http\UploadedFile;
- trait InteractsWithInput
- {
- /**
- * Retrieve a server variable from the request.
- *
- * @param string $key
- * @param string|array|null $default
- * @return string|array
- */
- public function server($key = null, $default = null)
- {
- return $this->retrieveItem('server', $key, $default);
- }
- /**
- * Determine if a header is set on the request.
- *
- * @param string $key
- * @return bool
- */
- public function hasHeader($key)
- {
- return ! is_null($this->header($key));
- }
- /**
- * Retrieve a header from the request.
- *
- * @param string $key
- * @param string|array|null $default
- * @return string|array
- */
- public function header($key = null, $default = null)
- {
- return $this->retrieveItem('headers', $key, $default);
- }
- /**
- * Get the bearer token from the request headers.
- *
- * @return string|null
- */
- public function bearerToken()
- {
- $header = $this->header('Authorization', '');
- if (Str::startsWith($header, 'Bearer ')) {
- return Str::substr($header, 7);
- }
- }
- /**
- * Determine if the request contains a given input item key.
- *
- * @param string|array $key
- * @return bool
- */
- public function exists($key)
- {
- return $this->has($key);
- }
- /**
- * Determine if the request contains a given input item key.
- *
- * @param string|array $key
- * @return bool
- */
- public function has($key)
- {
- $keys = is_array($key) ? $key : func_get_args();
- $input = $this->all();
- foreach ($keys as $value) {
- if (! Arr::has($input, $value)) {
- return false;
- }
- }
- return true;
- }
- /**
- * Determine if the request contains any of the given inputs.
- *
- * @param dynamic $key
- * @return bool
- */
- public function hasAny(...$keys)
- {
- $input = $this->all();
- foreach ($keys as $key) {
- if (Arr::has($input, $key)) {
- return true;
- }
- }
- return false;
- }
- /**
- * Determine if the request contains a non-empty value for an input item.
- *
- * @param string|array $key
- * @return bool
- */
- public function filled($key)
- {
- $keys = is_array($key) ? $key : func_get_args();
- foreach ($keys as $value) {
- if ($this->isEmptyString($value)) {
- return false;
- }
- }
- return true;
- }
- /**
- * Determine if the given input key is an empty string for "has".
- *
- * @param string $key
- * @return bool
- */
- protected function isEmptyString($key)
- {
- $value = $this->input($key);
- return ! is_bool($value) && ! is_array($value) && trim((string) $value) === '';
- }
- /**
- * Get the keys for all of the input and files.
- *
- * @return array
- */
- public function keys()
- {
- return array_merge(array_keys($this->input()), $this->files->keys());
- }
- /**
- * Get all of the input and files for the request.
- *
- * @param array|mixed $keys
- * @return array
- */
- public function all($keys = null)
- {
- $input = array_replace_recursive($this->input(), $this->allFiles());
- if (! $keys) {
- return $input;
- }
- $results = [];
- foreach (is_array($keys) ? $keys : func_get_args() as $key) {
- Arr::set($results, $key, Arr::get($input, $key));
- }
- return $results;
- }
- /**
- * Retrieve an input item from the request.
- *
- * @param string $key
- * @param string|array|null $default
- * @return string|array
- */
- public function input($key = null, $default = null)
- {
- return data_get(
- $this->getInputSource()->all() + $this->query->all(), $key, $default
- );
- }
- /**
- * Get a subset containing the provided keys with values from the input data.
- *
- * @param array|mixed $keys
- * @return array
- */
- public function only($keys)
- {
- $results = [];
- $input = $this->all();
- $placeholder = new stdClass;
- foreach (is_array($keys) ? $keys : func_get_args() as $key) {
- $value = data_get($input, $key, $placeholder);
- if ($value !== $placeholder) {
- Arr::set($results, $key, $value);
- }
- }
- return $results;
- }
- /**
- * Get all of the input except for a specified array of items.
- *
- * @param array|mixed $keys
- * @return array
- */
- public function except($keys)
- {
- $keys = is_array($keys) ? $keys : func_get_args();
- $results = $this->all();
- Arr::forget($results, $keys);
- return $results;
- }
- /**
- * Retrieve a query string item from the request.
- *
- * @param string $key
- * @param string|array|null $default
- * @return string|array
- */
- public function query($key = null, $default = null)
- {
- return $this->retrieveItem('query', $key, $default);
- }
- /**
- * Retrieve a request payload item from the request.
- *
- * @param string $key
- * @param string|array|null $default
- *
- * @return string|array
- */
- public function post($key = null, $default = null)
- {
- return $this->retrieveItem('request', $key, $default);
- }
- /**
- * Determine if a cookie is set on the request.
- *
- * @param string $key
- * @return bool
- */
- public function hasCookie($key)
- {
- return ! is_null($this->cookie($key));
- }
- /**
- * Retrieve a cookie from the request.
- *
- * @param string $key
- * @param string|array|null $default
- * @return string|array
- */
- public function cookie($key = null, $default = null)
- {
- return $this->retrieveItem('cookies', $key, $default);
- }
- /**
- * Get an array of all of the files on the request.
- *
- * @return array
- */
- public function allFiles()
- {
- $files = $this->files->all();
- return $this->convertedFiles
- ? $this->convertedFiles
- : $this->convertedFiles = $this->convertUploadedFiles($files);
- }
- /**
- * Convert the given array of Symfony UploadedFiles to custom Laravel UploadedFiles.
- *
- * @param array $files
- * @return array
- */
- protected function convertUploadedFiles(array $files)
- {
- return array_map(function ($file) {
- if (is_null($file) || (is_array($file) && empty(array_filter($file)))) {
- return $file;
- }
- return is_array($file)
- ? $this->convertUploadedFiles($file)
- : UploadedFile::createFromBase($file);
- }, $files);
- }
- /**
- * Determine if the uploaded data contains a file.
- *
- * @param string $key
- * @return bool
- */
- public function hasFile($key)
- {
- if (! is_array($files = $this->file($key))) {
- $files = [$files];
- }
- foreach ($files as $file) {
- if ($this->isValidFile($file)) {
- return true;
- }
- }
- return false;
- }
- /**
- * Check that the given file is a valid file instance.
- *
- * @param mixed $file
- * @return bool
- */
- protected function isValidFile($file)
- {
- return $file instanceof SplFileInfo && $file->getPath() !== '';
- }
- /**
- * Retrieve a file from the request.
- *
- * @param string $key
- * @param mixed $default
- * @return \Illuminate\Http\UploadedFile|array|null
- */
- public function file($key = null, $default = null)
- {
- return data_get($this->allFiles(), $key, $default);
- }
- /**
- * Retrieve a parameter item from a given source.
- *
- * @param string $source
- * @param string $key
- * @param string|array|null $default
- * @return string|array
- */
- protected function retrieveItem($source, $key, $default)
- {
- if (is_null($key)) {
- return $this->$source->all();
- }
- return $this->$source->get($key, $default);
- }
- }