Elcodi\Admin\MetricBundle\Model\PartialInterval::create PHP Метод

create() публичный статический Метод

Static creation
public static create ( array $elements, string $first ) : self
$elements array Elements
$first string First
Результат self New instance
    public static function create(array $elements, $first)
    {
        return new self($elements, $first);
    }

Usage Example

Пример #1
0
 /**
  * Given a type, create and configure the interval container
  *
  * @param integer $type Type of calculation
  *
  * @return IntervalContainer
  */
 public function getIntervalContainer($type)
 {
     $intervalContainer = IntervalContainer::create();
     $now = new DateTime();
     switch ($type) {
         /**
          * Today
          */
         case AdminPanelTypes::PANEL_TYPE_TODAY:
             break;
             /**
              * Yesterday
              */
         /**
          * Yesterday
          */
         case AdminPanelTypes::PANEL_TYPE_YESTERDAY:
             $intervalContainer->setStartDay(DateTime::createFromFormat('U', strtotime("-1 day"), $now->getTimezone()));
             break;
             /**
              * Last 7 days
              */
         /**
          * Last 7 days
          */
         case AdminPanelTypes::PANEL_TYPE_LAST_WEEK:
             $intervalContainer->setStartDay(DateTime::createFromFormat('U', strtotime("-6 day"), $now->getTimezone()))->setElementsIntervalFormat(['PT', 1, 'H'])->setIterations(167)->setElementsGrouping(3)->setChartElementsSeparation(8)->setChartLegendFormat('M. j');
             break;
             /**
              * Last 30 days
              */
         /**
          * Last 30 days
          */
         case AdminPanelTypes::PANEL_TYPE_LAST_MONTH:
             $intervalContainer->setStartDay(DateTime::createFromFormat('U', strtotime("-29 day"), $now->getTimezone()))->setElementsIntervalFormat(['P', 1, 'D'])->setIterations(29)->setElementsFormat('Y-m-d')->setChartElementsSeparation(4)->setChartLegendFormat('M. j');
             break;
             /**
              * Last 90 days
              */
         /**
          * Last 90 days
          */
         case AdminPanelTypes::PANEL_TYPE_LAST_QUARTER:
             $intervalContainer->setStartDay(DateTime::createFromFormat('U', strtotime("-89 day"), $now->getTimezone()))->setElementsIntervalFormat(['P', 1, 'D'])->setIterations(89)->setElementsFormat('Y-m-d')->setChartElementsSeparation(8)->setChartLegendFormat('M. j');
             break;
     }
     $intervalContainer->resetHourStartDay();
     $startDay = $intervalContainer->getStartDay();
     $iterations = $intervalContainer->getIterations();
     $elementsIntervalFormat = $intervalContainer->getElementsIntervalFormat();
     $elementsFormat = $intervalContainer->getElementsFormat();
     $elementsGrouping = $intervalContainer->getElementsGrouping();
     $timeElements = [$startDay];
     for ($i = 1; $i <= $iterations; $i++) {
         $time = clone $startDay;
         $time->add(new \DateInterval($elementsIntervalFormat[0] . $i * $elementsIntervalFormat[1] . $elementsIntervalFormat[2]));
         $timeElements[] = $time;
     }
     $timeElement = reset($timeElements);
     while ($timeElement instanceof \DateTime) {
         $firstTimeElement = clone $timeElement;
         $elementFormatted = $timeElement->format($elementsFormat);
         $intervalContainer->addElement($elementFormatted);
         $groupedPartials = [$elementFormatted];
         for ($k = 1; $k < $elementsGrouping; $k++) {
             $timeElement = next($timeElements);
             $elementFormatted = $timeElement->format($elementsFormat);
             $intervalContainer->addElement($elementFormatted);
             $groupedPartials[] = $elementFormatted;
         }
         $intervalContainer->addPartialInterval(PartialInterval::create($groupedPartials, $firstTimeElement));
         $timeElement = next($timeElements);
     }
     return $intervalContainer;
 }