Ejemplo n.º 1
0
 /**
  * @covers ::groupBy
  */
 public function testGroupBy()
 {
     $callback = function ($item) {
         return $item->id;
     };
     $group1 = new TestObject(1);
     $group2 = new TestObject(2);
     $obj1 = new TestObject($group1);
     $obj2 = new TestObject($group1);
     $obj3 = new TestObject($group2);
     $objects = new SplObjectStorage();
     $objects->attach($obj1);
     $objects->attach($obj2);
     $objects->attach($obj3);
     $expected = new SplObjectStorage();
     $expected[$group1] = new SplObjectStorage();
     $expected[$group1]->attach($obj1);
     $expected[$group1]->attach($obj2);
     $expected[$group2] = new SplObjectStorage();
     $expected[$group2]->attach($obj3);
     $this->assertEquals($expected, Objects::groupBy($objects, $callback));
 }
Ejemplo n.º 2
0
 /**
  * Group models by repo, call yield for each repo
  *
  * @param Closure $yield Call for each repo ($repo, $models)
  */
 public function byRepo(Closure $yield)
 {
     $repos = Objects::groupBy($this->models, function (AbstractModel $model) {
         return $model->getRepo()->getRootRepo();
     });
     foreach ($repos as $repo) {
         $models = new Models();
         $models->addObjects($repos->getInfo());
         $yield($repo, $models);
     }
 }