| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 | 
							- <?php
 
- declare(strict_types=1);
 
- /**
 
-  * This file is part of Hyperf.
 
-  *
 
-  * @link     https://www.hyperf.io
 
-  * @document https://hyperf.wiki
 
-  * @contact  group@hyperf.io
 
-  * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
 
-  */
 
- namespace Hyperf\Utils;
 
- use ArrayAccess;
 
- use Hyperf\Utils\Contracts\Arrayable;
 
- use Hyperf\Utils\Contracts\Jsonable;
 
- use JsonSerializable;
 
- /**
 
-  * Most of the methods in this file come from illuminate/support,
 
-  * thanks Laravel Team provide such a useful class.
 
-  */
 
- class Fluent implements ArrayAccess, Arrayable, Jsonable, JsonSerializable
 
- {
 
-     /**
 
-      * All of the attributes set on the fluent instance.
 
-      *
 
-      * @var array
 
-      */
 
-     protected $attributes = [];
 
-     /**
 
-      * Create a new fluent instance.
 
-      *
 
-      * @param array|object $attributes
 
-      */
 
-     public function __construct($attributes = [])
 
-     {
 
-         foreach ($attributes as $key => $value) {
 
-             $this->attributes[$key] = $value;
 
-         }
 
-     }
 
-     /**
 
-      * Handle dynamic calls to the fluent instance to set attributes.
 
-      *
 
-      * @param string $method
 
-      * @param array $parameters
 
-      * @return $this
 
-      */
 
-     public function __call($method, $parameters)
 
-     {
 
-         $this->attributes[$method] = count($parameters) > 0 ? $parameters[0] : true;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Dynamically retrieve the value of an attribute.
 
-      *
 
-      * @param string $key
 
-      */
 
-     public function __get($key)
 
-     {
 
-         return $this->get($key);
 
-     }
 
-     /**
 
-      * Dynamically set the value of an attribute.
 
-      *
 
-      * @param string $key
 
-      * @param mixed $value
 
-      */
 
-     public function __set($key, $value)
 
-     {
 
-         $this->offsetSet($key, $value);
 
-     }
 
-     /**
 
-      * Dynamically check if an attribute is set.
 
-      *
 
-      * @param string $key
 
-      * @return bool
 
-      */
 
-     public function __isset($key)
 
-     {
 
-         return $this->offsetExists($key);
 
-     }
 
-     /**
 
-      * Dynamically unset an attribute.
 
-      *
 
-      * @param string $key
 
-      */
 
-     public function __unset($key)
 
-     {
 
-         $this->offsetUnset($key);
 
-     }
 
-     public function __toString(): string
 
-     {
 
-         return $this->toJson();
 
-     }
 
-     /**
 
-      * Get an attribute from the fluent instance.
 
-      *
 
-      * @param string $key
 
-      * @param null|mixed $default
 
-      */
 
-     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
 
-      */
 
-     public function getAttributes()
 
-     {
 
-         return $this->attributes;
 
-     }
 
-     /**
 
-      * Convert the fluent instance to an array.
 
-      */
 
-     public function toArray(): array
 
-     {
 
-         return $this->attributes;
 
-     }
 
-     /**
 
-      * Convert the object into something JSON serializable.
 
-      *
 
-      * @return array
 
-      */
 
-     public function jsonSerialize()
 
-     {
 
-         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 string $offset
 
-      * @return bool
 
-      */
 
-     public function offsetExists($offset)
 
-     {
 
-         return isset($this->attributes[$offset]);
 
-     }
 
-     /**
 
-      * Get the value for a given offset.
 
-      *
 
-      * @param string $offset
 
-      */
 
-     public function offsetGet($offset)
 
-     {
 
-         return $this->get($offset);
 
-     }
 
-     /**
 
-      * Set the value at the given offset.
 
-      *
 
-      * @param string $offset
 
-      * @param mixed $value
 
-      */
 
-     public function offsetSet($offset, $value)
 
-     {
 
-         $this->attributes[$offset] = $value;
 
-     }
 
-     /**
 
-      * Unset the value at the given offset.
 
-      *
 
-      * @param string $offset
 
-      */
 
-     public function offsetUnset($offset)
 
-     {
 
-         unset($this->attributes[$offset]);
 
-     }
 
- }
 
 
  |