Browse Source

Fill in union context

reader
J. King 2 years ago
parent
commit
206c5c0012
  1. 3
      lib/Context/Context.php
  2. 2
      lib/Context/RootContext.php
  3. 41
      lib/Context/UnionContext.php

3
lib/Context/Context.php

@ -6,8 +6,7 @@
declare(strict_types=1);
namespace JKingWeb\Arsse\Context;
class Context extends AbstractContext {
use RootMembers;
class Context extends RootContext {
use BooleanMembers;
use ExclusionMembers;

2
lib/Context/RootMembers.php → lib/Context/RootContext.php

@ -6,7 +6,7 @@
declare(strict_types=1);
namespace JKingWeb\Arsse\Context;
trait RootMembers {
class RootContext extends AbstractContext {
public $limit = 0;
public $offset = 0;

41
lib/Context/UnionContext.php

@ -0,0 +1,41 @@
<?php
/** @license MIT
* Copyright 2017 J. King, Dustin Wilson et al.
* See LICENSE and AUTHORS files for details */
declare(strict_types=1);
namespace JKingWeb\Arsse\Context;
class UnionContext extends RootContext implements \ArrayAccess, \Countable, \IteratorAggregate {
protected $contexts = [];
public function offsetExists(mixed $offset): bool {
return array_key_exists($offset, $this->contexts);
}
public function offsetGet(mixed $offset): mixed {
return $this->contexts[$offset] ?? null;
}
public function offsetSet(mixed $offset, mixed $value): void {
$this->contexts[$offset ?? count($this->contexts)] = $value;
}
public function offsetUnset(mixed $offset): void {
unset($this->contexts[$offset]);
}
public function count(): int {
return count($this->contexts);
}
public function getIterator(): \Traversable {
foreach ($this->contexts as $k => $c) {
yield $k => $c;
}
}
public function __construct(Context ...$context) {
$this->contexts = $context;
}
}
Loading…
Cancel
Save