snappymail/rainloop/v/0.0.0/app/libraries/MailSo/Base/Collection.php
2020-03-19 15:21:00 +01:00

59 lines
1.1 KiB
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
{
/**
* @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 Add($mItem, bool $bToTop = false) : self
{
$this->append($mItem, $bToTop);
return $this;
}
public function Clear() : void
{
$this->exchangeArray([]);
}
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;
}
}