public static function showSqlLogs() { $total = 0; foreach (self::$logs['sql'] as $key => $log) { $bindings = array(); if (is_array($log['bindings'])) { foreach ($log['bindings'] as $bind) { $bindings[] = $bind[0] . '=' . $bind[1] . ' ' . $bind[2]; } } $errorInfo = ''; $total += $log['time']; $classes = array(); if ($log['errorInfo'][0] != '00000') { $errorInfo = ' | ' . $log['errorInfo'][2]; $classes[] = 'error'; } $classes[] = $log['time'] > 0.5 ? 'alert' : ''; ?> <p class="<?php echo implode(' ', $classes); ?> "><?php echo '[', $key, '] ', $log['sql'], ' | ', implode(',', $bindings), $errorInfo, ' | rows: ' . $log['rows'] . ' | ', Number::format($log['time'], 5, ','), 's'; ?> </p> <?php } ?> <p class="total">Total : <?php echo count(self::$logs['sql']); ?> requête(s) pour <?php echo Number::format($total, 5, ','); ?> s</p> <?php }
/** * Format a unit string. * * @param int|float|string $number The unit amount * @param string $unit The unit identifier (eg 'duration/millisecond' or 'millisecond') * @param string $width The format name; it can be 'long' (eg '3 milliseconds'), 'short' (eg '3 ms') or 'narrow' (eg '3ms'). You can also add a precision specifier ('long,2' or just '2') * @param string $locale The locale to use. If empty we'll use the default locale set in \Punic\Data * * @return string * * @throws Exception\ValueNotInList */ public static function format($number, $unit, $width = 'short', $locale = '') { $data = Data::get('units', $locale); $precision = null; if (is_int($width)) { $precision = $width; $width = 'short'; } elseif (is_string($width) && preg_match('/^(?:(.*),)?([+\\-]?\\d+)$/', $width, $m)) { $precision = intval($m[2]); $width = $m[1]; if (!isset($width[0])) { $width = 'short'; } } if (strpos($width, '_') === 0 || !isset($data[$width])) { $widths = array(); foreach (array_keys($data) as $w) { if (strpos($w, '_') !== 0) { $widths[] = $w; } } throw new Exception\ValueNotInList($width, $widths); } $data = $data[$width]; if (strpos($unit, '/') === false) { $unitCategory = null; $unitID = null; foreach (array_keys($data) as $c) { if (strpos($c, '_') === false) { if (isset($data[$c][$unit])) { if (is_null($unitCategory)) { $unitCategory = $c; $unitID = $unit; } else { $unitCategory = null; break; } } } } } else { list($unitCategory, $unitID) = explode('/', $unit, 2); } $rules = null; if (strpos($unit, '_') === false && !is_null($unitCategory) && !is_null($unitID) && isset($data[$unitCategory]) && array_key_exists($unitID, $data[$unitCategory])) { $rules = $data[$unitCategory][$unitID]; } if (is_null($rules)) { $units = array(); foreach ($data as $c => $us) { if (strpos($c, '_') === false) { foreach (array_keys($us) as $u) { if (strpos($c, '_') === false) { $units[] = "{$c}/{$u}"; } } } } throw new \Punic\Exception\ValueNotInList($unit, $units); } $pluralRule = Plural::getRule($number, $locale); //@codeCoverageIgnoreStart // These checks aren't necessary since $pluralRule should always be in $rules, but they don't hurt ;) if (!isset($rules[$pluralRule])) { if (isset($rules['other'])) { $pluralRule = 'other'; } else { $availableRules = array_keys($rules); $pluralRule = $availableRules[0]; } } //@codeCoverageIgnoreEnd return sprintf($rules[$pluralRule], Number::format($number, $precision, $locale)); }