Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
SelectRenderer.php
Go to the documentation of this file.
1 <?php
7 
9 
14 {
18  protected $renderers;
19 
23  public function __construct(
24  array $renderers
25  ) {
26  $this->renderers = $this->sort($renderers);
27  }
28 
35  protected function sort($renders)
36  {
37  $length = count($renders);
38  if ($length <= 1) {
39  return $renders;
40  } else {
41  $pivot = array_shift($renders);
42  $left = $right = [];
43  foreach ($renders as $render) {
44  if ($render['sort'] < $pivot['sort']) {
45  $left[] = $render;
46  } else {
47  $right[] = $render;
48  }
49  }
50 
51  return array_merge(
52  $this->sort($left),
53  [$pivot],
54  $this->sort($right)
55  );
56  }
57  }
58 
66  public function render(Select $select, $sql = '')
67  {
68  $sql = Select::SQL_SELECT;
69  foreach ($this->renderers as $renderer) {
70  if (in_array($renderer['part'], [Select::COLUMNS, Select::FROM]) || $select->getPart($renderer['part'])) {
71  $sql = $renderer['renderer']->render($select, $sql);
72  }
73  }
74  return $sql;
75  }
76 }
const SQL_SELECT
Definition: Select.php:67
const FROM
Definition: Select.php:49
const COLUMNS
Definition: Select.php:48