File: //usr/local/CyberCP/public/snappymail/snappymail/v/2.38.2/app/libraries/MailSo/Base/Collection.php
<?php
/*
* This file is part of MailSo.
*
* (c) 2014 Usenko Timur
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace MailSo\Base;
/**
* @category MailSo
* @package Base
*/
abstract class Collection extends \ArrayObject implements \JsonSerializable
{
function __construct($input = array(), int $flags = 0, string $iterator_class = 'ArrayIterator')
{
parent::__construct(/*[], $flags, $iterator_class*/);
foreach ($input as $item) {
$this->append($item);
}
}
/**
* @param mixed $mItem
*/
public function append($mItem, bool $bToTop = false) : void
{
if ($bToTop) {
$array = $this->getArrayCopy();
\array_unshift($array, $mItem);
$this->exchangeArray($array);
} else {
parent::append($mItem);
}
}
public function keys() : array
{
return \array_keys($this->getArrayCopy());
}
public function Add($mItem, bool $bToTop = false) : self
{
$this->append($mItem, $bToTop);
return $this;
}
public function Clear() : void
{
$this->exchangeArray([]);
}
/*
public function __call(string $name, array $arguments)
{
$callable = "array_{$name}";
if (!\is_callable($callable)) {
throw new BadMethodCallException(__CLASS__.'->'.$name);
}
return $callable($this->getArrayCopy(), ...$arguments);
}
*/
public function Slice(int $offset, ?int $length = null, bool $preserve_keys = false)
{
return new static(
\array_slice($this->getArrayCopy(), $offset, $length, $preserve_keys)
);
}
public function Crop(?int $length = null, int $offset = 0, bool $preserve_keys = false)
{
$this->exchangeArray(
\array_slice($this->getArrayCopy(), $offset, $length, $preserve_keys)
);
return $this;
}
#[\ReturnTypeWillChange]
public function jsonSerialize()
{
$aNames = \explode('\\', \get_class($this));
return array(
'@Object' => 'Collection/' . \end($aNames),
'@Collection' => $this->getArrayCopy()
);
}
}