Overview

Namespaces

  • Baguette
    • Mastodon
      • Config
      • Entity
      • Grant
      • Service
  • GuzzleHttp
    • Cookie
    • Exception
    • Handler
    • Promise
  • Psr
    • Http
      • Message
  • Teto
    • Object

Classes

  • Baguette\Mastodon\Client
  • Baguette\Mastodon\Config\DotEnvStorage
  • Baguette\Mastodon\Entity\Account
  • Baguette\Mastodon\Entity\Application
  • Baguette\Mastodon\Entity\Attachment
  • Baguette\Mastodon\Entity\Card
  • Baguette\Mastodon\Entity\Context
  • Baguette\Mastodon\Entity\Entity
  • Baguette\Mastodon\Entity\Error_
  • Baguette\Mastodon\Entity\Instance
  • Baguette\Mastodon\Entity\Mention
  • Baguette\Mastodon\Entity\Notification
  • Baguette\Mastodon\Entity\Status
  • Baguette\Mastodon\Entity\Tag
  • Baguette\Mastodon\EntityCaster
  • Baguette\Mastodon\Grant\CodeGrant
  • Baguette\Mastodon\Grant\Grant
  • Baguette\Mastodon\Grant\NoopGrant
  • Baguette\Mastodon\Grant\PasswordCredential
  • Baguette\Mastodon\Mastodon
  • Baguette\Mastodon\Requester
  • Baguette\Mastodon\Service\AuthFactory
  • Baguette\Mastodon\Service\Authorization
  • Baguette\Mastodon\Service\Scope
  • Baguette\Mastodon\Service\SessionStorage
  • Baguette\Mastodon\Service\Toot

Interfaces

  • Baguette\Mastodon\Config\Storage

Exceptions

  • Baguette\Mastodon\Service\AuthorizationException

Constants

  • Baguette\Mastodon\Entity\DATETIME_FORMAT

Functions

  • Baguette\Mastodon\authorization
  • Baguette\Mastodon\credential
  • Baguette\Mastodon\Entity\map
  • Baguette\Mastodon\Entity\mapValues
  • Baguette\Mastodon\Entity\toArrayValue
  • Baguette\Mastodon\grant
  • Baguette\Mastodon\http
  • Baguette\Mastodon\request
  • Baguette\Mastodon\scope
  • Baguette\Mastodon\session
  • Baguette\Mastodon\toot
  • Overview
  • Namespace
  • Class
  1:   2:   3:   4:   5:   6:   7:   8:   9:  10:  11:  12:  13:  14:  15:  16:  17:  18:  19:  20:  21:  22:  23:  24:  25:  26:  27:  28:  29:  30:  31:  32:  33:  34:  35:  36:  37:  38:  39:  40:  41:  42:  43:  44:  45:  46:  47:  48:  49:  50:  51:  52:  53:  54:  55:  56:  57:  58:  59:  60:  61:  62:  63:  64:  65:  66:  67:  68:  69:  70:  71:  72:  73:  74:  75:  76:  77:  78:  79:  80:  81:  82:  83:  84:  85:  86:  87:  88:  89:  90:  91:  92:  93:  94:  95:  96:  97:  98:  99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 
<?php

namespace Teto\Object;

/**
 * Interface for array compatible object
 *
 * @author    USAMI Kenta <tadsan@zonu.me>
 * @copyright 2016 Baguette HQ
 * @license   http://www.apache.org/licenses/LICENSE-2.0
 */
class ObjectArray implements \ArrayAccess, \Countable, \IteratorAggregate, ToArrayInterface
{
    private $objects = [];

    /**
     * @param object
     */
    public function __construct()
    {
        $this->objects = func_get_args() ?: [];
    }

    /**
     * @param  ObjectArray|object[] $objects
     * @return ObjectArray
     * @throws InvalidArgumentException
     */
    public static function fromArray($objects)
    {
        if ($objects instanceof ObjectArray) {
            return $objects;
        } elseif (!is_array($objects) && !$objects instanceof ToArrayInterface) {
            throw new \InvalidArgumentException;
        }

        $model_array = new ObjectArray;
        $model_array->objects = array_values($objects);

        return $model_array;
    }

    /**
     * @return array
     */
    public function toArray()
    {
        $arrays = [];
        foreach ($this->objects as $k => $object) {
            $arrays[$k] = self::toArrayRec($object);
        }

        return $arrays;
    }

    /**
     * Convert elements to recursive array
     *
     * @param mixed $object
     * @param int   $rec    ネストの深さ
     */
    public static function toArrayRec($object, $rec = 5)
    {
        if ($rec < 1
            || empty($object)
            || is_scalar($object)
        ) {
            return $object;
        }

        if ($object instanceof ToArrayInterface) {
            return $object->toArray();
        } elseif (!is_array($object)) {
            return $object;
        }

        $retval = [];
        foreach ($object as $idx => $obj) {
            $retval[$idx] = self::toArrayRec($obj, $rec - 1);
        }

        return $retval;
    }

    public function getObjects()
    {
        require $this->objects;
    }

    /**
     * @return int
     */
    public function count()
    {
        return count($this->objects);
    }

    /**
     * @param  mixed offset
     * @return bool
     */
    public function offsetExists($offset)
    {
        return !empty($this->objects[$offset]);
    }

    /**
     * @param  mixed offset
     * @return mixed
     * @throws OutOfBoundsException
     */
    public function offsetGet($offset)
    {
        if (!array_key_exists($offset, $this->objects)) {
            throw new \OutOfBoundsException("Undefined offset: {$offset}");
        }

        return $this->objects[$offset];
    }

    /**
     * @param  mixed offset
     * @param  mixed value
     * @return void
     * @throws OutOfBoundsException
     */
    public function offsetSet($offset, $value)
    {
        if ($offset === null) {
            $this->objects[] = $value;
        } else {
            $this->objects[$offset] = $value;
        }
    }

    /**
     * @param  mixed offset
     * @return void
     */
    public function offsetUnset($offset)
    {
        unset($this->objects[$offset]);
    }

    /**
     * @return \ArrayIterator
     */
    public function getIterator()
    {
        return new \ArrayIterator($this->objects);
    }
}
ξ ^ω^)ξ Baguette PHP Mastodon API Client / SDK API documentation generated by ApiGen