<?php /* * This file is part of the overtrue/socialite. * * (c) overtrue <i@overtrue.me> * * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace Overtrue\Socialite; /** * Trait HasAttributes. */ trait HasAttributes { /** * @var array */ protected $attributes = []; /** * Return the attributes. * * @return array */ public function getAttributes() { return $this->attributes; } /** * Return the extra attribute. * * @param string $name * @param string $default * * @return mixed */ public function getAttribute($name, $default = null) { return isset($this->attributes[$name]) ? $this->attributes[$name] : $default; } /** * Set extra attributes. * * @param string $name * @param mixed $value * * @return $this */ public function setAttribute($name, $value) { $this->attributes[$name] = $value; return $this; } /** * Map the given array onto the user's properties. * * @param array $attributes * * @return $this */ public function merge(array $attributes) { $this->attributes = array_merge($this->attributes, $attributes); return $this; } /** * {@inheritdoc} */ public function offsetExists($offset) { return array_key_exists($offset, $this->attributes); } /** * {@inheritdoc} */ public function offsetGet($offset) { return $this->getAttribute($offset); } /** * {@inheritdoc} */ public function offsetSet($offset, $value) { $this->setAttribute($offset, $value); } /** * {@inheritdoc} */ public function offsetUnset($offset) { unset($this->attributes[$offset]); } /** * {@inheritdoc} */ public function __get($property) { return $this->getAttribute($property); } /** * Return array. * * @return array */ public function toArray() { return $this->getAttributes(); } /** * Return JSON. * * @return string */ public function toJSON() { return json_encode($this->getAttributes(), JSON_UNESCAPED_UNICODE); } }