%PDF- %PDF-
Direktori : /var/www/html/hrsys/api/vendor/laravel/framework/src/Illuminate/View/ |
Current File : /var/www/html/hrsys/api/vendor/laravel/framework/src/Illuminate/View/ComponentAttributeBag.php |
<?php namespace Illuminate\View; use ArrayAccess; use ArrayIterator; use Illuminate\Contracts\Support\Htmlable; use Illuminate\Support\Arr; use Illuminate\Support\HtmlString; use Illuminate\Support\Str; use IteratorAggregate; class ComponentAttributeBag implements ArrayAccess, Htmlable, IteratorAggregate { /** * The raw array of attributes. * * @var array */ protected $attributes = []; /** * Create a new component attribute bag instance. * * @param array $attributes * @return void */ public function __construct(array $attributes = []) { $this->attributes = $attributes; } /** * Get a given attribute from the attribute array. * * @param string $key * @param mixed $default * @return mixed */ public function get($key, $default = null) { return $this->attributes[$key] ?? value($default); } /** * Only include the given attribute from the attribute array. * * @param mixed|array $keys * @return static */ public function only($keys) { if (is_null($keys)) { $values = $this->attributes; } else { $keys = Arr::wrap($keys); $values = Arr::only($this->attributes, $keys); } return new static($values); } /** * Exclude the given attribute from the attribute array. * * @param mixed|array $keys * @return static */ public function except($keys) { if (is_null($keys)) { $values = $this->attributes; } else { $keys = Arr::wrap($keys); $values = Arr::except($this->attributes, $keys); } return new static($values); } /** * Exclude the given attribute from the attribute array. * * @param mixed|array $keys * @return static */ public function exceptProps($keys) { $props = []; foreach ($keys as $key) { $props[] = $key; $props[] = Str::kebab($key); } return $this->except($props); } /** * Merge additional attributes / values into the attribute bag. * * @param array $attributes * @return static */ public function merge(array $attributeDefaults = []) { $attributes = []; $attributeDefaults = array_map(function ($value) { return e($value); }, $attributeDefaults); foreach ($this->attributes as $key => $value) { if ($key !== 'class') { $attributes[$key] = $value; continue; } $attributes[$key] = implode(' ', array_unique( array_filter([$attributeDefaults[$key] ?? '', $value]) )); } return new static(array_merge($attributeDefaults, $attributes)); } /** * Set the underlying attributes. * * @param array $attributes * @return void */ public function setAttributes(array $attributes) { $this->attributes = $attributes; } /** * Get content as a string of HTML. * * @return string */ public function toHtml() { return (string) $this; } /** * Merge additional attributes / values into the attribute bag. * * @param array $attributes * @return \Illuminate\Support\HtmlString */ public function __invoke(array $attributeDefaults = []) { return new HtmlString((string) $this->merge($attributeDefaults)); } /** * Determine if the given offset exists. * * @param string $offset * @return bool */ public function offsetExists($offset) { return isset($this->attributes[$offset]); } /** * Get the value at the given offset. * * @param string $offset * @return mixed */ public function offsetGet($offset) { return $this->get($offset); } /** * Set the value at a given offset. * * @param string $offset * @param mixed $value * @return void */ public function offsetSet($offset, $value) { $this->attributes[$offset] = $value; } /** * Remove the value at the given offset. * * @param string $offset * @return void */ public function offsetUnset($offset) { unset($this->attributes[$offset]); } /** * Get an iterator for the items. * * @return \ArrayIterator */ public function getIterator() { return new ArrayIterator($this->attributes); } /** * Implode the attributes into a single HTML ready string. * * @return string */ public function __toString() { $string = ''; foreach ($this->attributes as $key => $value) { if ($value === false || is_null($value)) { continue; } if ($value === true) { $value = $key; } $string .= ' '.$key.'="'.str_replace('"', '\\"', trim($value)).'"'; } return trim($string); } }