Example #1
0
 public function testArrayable()
 {
     $collection = new Collection();
     $collection[] = 1;
     $collection[] = 2;
     $collection[] = 3;
     $this->assertEquals([1, 2, 3], $collection->toArray());
     $collection1 = new Collection();
     $collection1->fromArray([3, 4, 5]);
     $collection2 = new Collection();
     $collection2[] = 3;
     $collection2[] = 4;
     $collection2[] = 5;
     $this->assertEquals($collection1, $collection2);
 }
Example #2
0
 public function testCollect()
 {
     $i1 = new \T4\Core\Std(['id' => 1, 'title' => 'foo']);
     $i2 = new \T4\Core\Std(['id' => 2, 'title' => 'bar']);
     $i3 = new \T4\Core\Std(['id' => 3, 'title' => 'baz']);
     $collection = new Collection();
     $collection->append($i1);
     $collection->append($i2);
     $collection->append($i3);
     $this->assertEquals([new \T4\Core\Std(['id' => 1, 'title' => 'foo']), new \T4\Core\Std(['id' => 2, 'title' => 'bar']), new \T4\Core\Std(['id' => 3, 'title' => 'baz'])], $collection->toArray());
     $ids = $collection->collect('id');
     $this->assertEquals([1, 2, 3], $ids);
     $titles = $collection->collect(function ($x) {
         return $x->title;
     });
     $this->assertEquals(['foo', 'bar', 'baz'], $titles);
     $collection = new Collection([['id' => 1, 'title' => 'foo'], ['id' => 2, 'title' => 'bar'], ['id' => 3, 'title' => 'baz']]);
     $ids = $collection->collect('id');
     $this->assertEquals([1, 2, 3], $ids);
     $titles = $collection->collect(function ($x) {
         return $x['title'];
     });
     $this->assertEquals(['foo', 'bar', 'baz'], $titles);
 }
Example #3
0
 protected static function getAllChildrenByIndex(Collection $tree, $index)
 {
     $lvl = $tree[$index]->__lvl;
     $tail = array_slice($tree->toArray(), $index + 1);
     $ret = [];
     foreach ($tail as $el) {
         if ($el->__lvl <= $lvl) {
             break;
         }
         $ret[] = $el;
     }
     return new Collection($ret);
 }