本文整理汇总了PHP中fGrammar::inflectOnQuantity方法的典型用法代码示例。如果您正苦于以下问题:PHP fGrammar::inflectOnQuantity方法的具体用法?PHP fGrammar::inflectOnQuantity怎么用?PHP fGrammar::inflectOnQuantity使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类fGrammar
的用法示例。
在下文中一共展示了fGrammar::inflectOnQuantity方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getFuzzyDifference
/**
* Returns the approximate difference in time, discarding any unit of measure but the least specific.
*
* The output will read like:
*
* - "This time is `{return value}` the provided one" when a time it passed
* - "This time is `{return value}`" when no time is passed and comparing with the current time
*
* Examples of output for a time passed might be:
*
* - `'5 minutes after'`
* - `'2 hours before'`
* - `'at the same time'`
*
* Examples of output for no time passed might be:
*
* - `'5 minutes ago'`
* - `'2 hours ago'`
* - `'right now'`
*
* You would never get the following output since it includes more than one unit of time measurement:
*
* - `'5 minutes and 28 seconds'`
* - `'1 hour, 15 minutes'`
*
* Values that are close to the next largest unit of measure will be rounded up:
*
* - `'55 minutes'` would be represented as `'1 hour'`, however `'45 minutes'` would not
*
* @param fTime|object|string|integer $other_time The time to create the difference with, `NULL` is interpreted as now
* @param boolean $simple When `TRUE`, the returned value will only include the difference in the two times, but not `from now`, `ago`, `after` or `before`
* @param boolean :$simple
* @return string The fuzzy difference in time between the this time and the one provided
*/
public function getFuzzyDifference($other_time = NULL, $simple = FALSE)
{
if (is_bool($other_time)) {
$simple = $other_time;
$other_time = NULL;
}
$relative_to_now = FALSE;
if ($other_time === NULL) {
$relative_to_now = TRUE;
}
$other_time = new fTime($other_time);
$diff = $this->time - $other_time->time;
if (abs($diff) < 10) {
if ($relative_to_now) {
return self::compose('right now');
}
return self::compose('at the same time');
}
static $break_points = array();
if (!$break_points) {
$break_points = array(45 => array(1, self::compose('second'), self::compose('seconds')), 2700 => array(60, self::compose('minute'), self::compose('minutes')), 64800 => array(3600, self::compose('hour'), self::compose('hours')), 432000 => array(86400, self::compose('day'), self::compose('days')));
}
foreach ($break_points as $break_point => $unit_info) {
if (abs($diff) > $break_point) {
continue;
}
$unit_diff = round(abs($diff) / $unit_info[0]);
$units = fGrammar::inflectOnQuantity($unit_diff, $unit_info[1], $unit_info[2]);
break;
}
if ($simple) {
return self::compose('%1$s %2$s', $unit_diff, $units);
}
if ($relative_to_now) {
if ($diff > 0) {
return self::compose('%1$s %2$s from now', $unit_diff, $units);
}
return self::compose('%1$s %2$s ago', $unit_diff, $units);
}
if ($diff > 0) {
return self::compose('%1$s %2$s after', $unit_diff, $units);
}
return self::compose('%1$s %2$s before', $unit_diff, $units);
}
示例2: getFuzzyDifference
/**
* Returns the approximate difference in time, discarding any unit of measure but the least specific.
*
* The output will read like:
*
* - "This timestamp is `{return value}` the provided one" when a timestamp it passed
* - "This timestamp is `{return value}`" when no timestamp is passed and comparing with the current timestamp
*
* Examples of output for a timestamp passed might be:
*
* - `'5 minutes after'`
* - `'2 hours before'`
* - `'2 days after'`
* - `'at the same time'`
*
* Examples of output for no timestamp passed might be:
*
* - `'5 minutes ago'`
* - `'2 hours ago'`
* - `'2 days from now'`
* - `'1 year ago'`
* - `'right now'`
*
* You would never get the following output since it includes more than one unit of time measurement:
*
* - `'5 minutes and 28 seconds'`
* - `'3 weeks, 1 day and 4 hours'`
*
* Values that are close to the next largest unit of measure will be rounded up:
*
* - `'55 minutes'` would be represented as `'1 hour'`, however `'45 minutes'` would not
* - `'29 days'` would be represented as `'1 month'`, but `'21 days'` would be shown as `'3 weeks'`
*
* @param fTimestamp|object|string|integer $other_timestamp The timestamp to create the difference with, `NULL` is interpreted as now
* @return string The fuzzy difference in time between the this timestamp and the one provided
*/
public function getFuzzyDifference($other_timestamp = NULL)
{
$relative_to_now = FALSE;
if ($other_timestamp === NULL) {
$relative_to_now = TRUE;
}
$other_timestamp = new fTimestamp($other_timestamp);
$diff = $this->timestamp - $other_timestamp->timestamp;
if (abs($diff) < 10) {
if ($relative_to_now) {
return self::compose('right now');
}
return self::compose('at the same time');
}
$break_points = array(45 => array(1, self::compose('second'), self::compose('seconds')), 2700 => array(60, self::compose('minute'), self::compose('minutes')), 64800 => array(3600, self::compose('hour'), self::compose('hours')), 432000 => array(86400, self::compose('day'), self::compose('days')), 1814400 => array(604800, self::compose('week'), self::compose('weeks')), 23328000 => array(2592000, self::compose('month'), self::compose('months')), 2147483647 => array(31536000, self::compose('year'), self::compose('years')));
foreach ($break_points as $break_point => $unit_info) {
if (abs($diff) > $break_point) {
continue;
}
$unit_diff = round(abs($diff) / $unit_info[0]);
$units = fGrammar::inflectOnQuantity($unit_diff, $unit_info[1], $unit_info[2]);
break;
}
if ($relative_to_now) {
if ($diff > 0) {
return self::compose('%1$s %2$s from now', $unit_diff, $units);
}
return self::compose('%1$s %2$s ago', $unit_diff, $units);
}
if ($diff > 0) {
return self::compose('%1$s %2$s after', $unit_diff, $units);
}
return self::compose('%1$s %2$s before', $unit_diff, $units);
}
示例3: printPiece
/**
* Prints out a piece of a template
*
* @param string $template The name of the template to print
* @param string $piece The piece of the template to print
* @param array $data The data to replace the variables with
* @return void
*/
private static function printPiece($template, $name, $data)
{
if (!isset(self::$templates[$template]['pieces'][$name])) {
throw new fProgrammerException('The template piece, %s, was not specified when defining the %s template', $name, $template);
}
$piece = self::$templates[$template]['pieces'][$name];
preg_match_all('#\\{\\{ (\\w+)((?:\\|\\w+)+)? \\}\\}#', $piece, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
$variable = $match[1];
$value = !isset($data[$variable]) ? NULL : $data[$variable];
if (isset($match[2])) {
$filters = array_slice(explode('|', $match[2]), 1);
foreach ($filters as $filter) {
if (!in_array($filter, self::$filters)) {
throw new fProgrammerException('The filter specified, %1$s, is invalid. Must be one of: %2$s.', $filter, join(', ', self::$filters));
}
if (!strlen($value)) {
continue;
}
if ($filter == 'inflect') {
$value = fGrammar::inflectOnQuantity($data['total_records'], $value);
} elseif ($filter == 'lower') {
$value = fUTF8::lower($value);
} elseif ($filter == 'url_encode') {
$value = urlencode($value);
} elseif ($filter == 'humanize') {
$value = fGrammar::humanize($value);
}
}
}
$piece = preg_replace('#' . preg_quote($match[0], '#') . '#', fHTML::encode($value), $piece, 1);
}
echo $piece;
}
示例4: getFuzzyDifference
/**
* Returns the approximate difference in time, discarding any unit of measure but the least specific.
*
* The output will read like:
*
* - "This date is `{return value}` the provided one" when a date it passed
* - "This date is `{return value}`" when no date is passed and comparing with today
*
* Examples of output for a date passed might be:
*
* - `'2 days after'`
* - `'1 year before'`
* - `'same day'`
*
* Examples of output for no date passed might be:
*
* - `'2 days from now'`
* - `'1 year ago'`
* - `'today'`
*
* You would never get the following output since it includes more than one unit of time measurement:
*
* - `'3 weeks and 1 day'`
* - `'1 year and 2 months'`
*
* Values that are close to the next largest unit of measure will be rounded up:
*
* - `6 days` would be represented as `1 week`, however `5 days` would not
* - `29 days` would be represented as `1 month`, but `21 days` would be shown as `3 weeks`
*
* @param fDate|object|string|integer $other_date The date to create the difference with, `NULL` is interpreted as today
* @param boolean $simple When `TRUE`, the returned value will only include the difference in the two dates, but not `from now`, `ago`, `after` or `before`
* @param boolean :$simple
* @return string The fuzzy difference in time between the this date and the one provided
*/
public function getFuzzyDifference($other_date = NULL, $simple = FALSE)
{
if (is_bool($other_date)) {
$simple = $other_date;
$other_date = NULL;
}
$relative_to_now = FALSE;
if ($other_date === NULL) {
$relative_to_now = TRUE;
}
$other_date = new fDate($other_date);
$diff = $this->date - $other_date->date;
if (abs($diff) < 86400) {
if ($relative_to_now) {
return self::compose('today');
}
return self::compose('same day');
}
static $break_points = array();
if (!$break_points) {
$break_points = array(432000 => array(86400, self::compose('day'), self::compose('days')), 1814400 => array(604800, self::compose('week'), self::compose('weeks')), 23328000 => array(2592000, self::compose('month'), self::compose('months')), 2147483647 => array(31536000, self::compose('year'), self::compose('years')));
}
foreach ($break_points as $break_point => $unit_info) {
if (abs($diff) > $break_point) {
continue;
}
$unit_diff = round(abs($diff) / $unit_info[0]);
$units = fGrammar::inflectOnQuantity($unit_diff, $unit_info[1], $unit_info[2]);
break;
}
if ($simple) {
return self::compose('%1$s %2$s', $unit_diff, $units);
}
if ($relative_to_now) {
if ($diff > 0) {
return self::compose('%1$s %2$s from now', $unit_diff, $units);
}
return self::compose('%1$s %2$s ago', $unit_diff, $units);
}
if ($diff > 0) {
return self::compose('%1$s %2$s after', $unit_diff, $units);
}
return self::compose('%1$s %2$s before', $unit_diff, $units);
}