Je možné vytvoriť metódu, ktorá bude „lazy“ spôsobom vraciať pole?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
dusan.ivanco
Člen | 4
+
0
-

Dobrý deň vám prajem. S nette začínam a riešim problém ako vytvoriť lazy metódu na generovanie poľa. Môj problém je presne taký istý ako: https://forum.nette.org/…any-datagrid?p=9 pričom odpoveď bola nasledovná: https://forum.nette.org/…any-datagrid?p=9

V podstate potrebujem vytvoriť datagrid, ktorý bude pozostávať z dosť náročných výpočtov, ktoré by sa priamo v db urobiť nedali (preto potrebujem použiť ako datasource array a nie dibi).

Príklad kódu na ktorom to skúšam:

<?php
private function getDataSourceTest() {
  $grid = [];

  $query = $this->Test->select()->FetchAll();
  foreach(Library::object2Array($query) as $result) {

    .
    .
    .

    array_push($grid, $result);
  }

  return $grid;
}

public function createComponentTest($name) {
  $grid = new DataGrid($this, $name);
  $grid->setDataSource($this->getDataSourceTest());

  .
  .
  .

  return $grid;
}
?>

A teraz vážne netuším či je tento problém nejako „jednoducho“ riešiteľný priamo v nette alebo to musí byť reálna vec v „vendor/ublaboo/datagrid/src/DataSource“

Za objasnenie a odpovede vám vopred veľmi pekne ďakujem.

Jan Tvrdík
Nette guru | 2595
+
+1
-

IMHO by to chtělo nový datasource, co pracuje nad countable iteratorem