Вход Регистрация
Файл: concrete5.7.5.6/concrete/vendor/zendframework/zend-i18n/src/View/Helper/NumberFormat.php
Строк: 135
<?php
/**
 * Zend Framework (http://framework.zend.com/)
 *
 * @link      http://github.com/zendframework/zf2 for the canonical source repository
 * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd New BSD License
 */

namespace ZendI18nViewHelper;

use 
Locale;
use 
NumberFormatter;
use 
ZendI18nException;
use 
ZendViewHelperAbstractHelper;

/**
 * View helper for formatting dates.
 */
class NumberFormat extends AbstractHelper
{
    
/**
     * number of decimals to use.
     *
     * @var int
     */
    
protected $decimals;

    
/**
     * NumberFormat style to use
     *
     * @var int
     */
    
protected $formatStyle;

    
/**
     * NumberFormat type to use
     *
     * @var int
     */
    
protected $formatType;

    
/**
     * Formatter instances
     *
     * @var array
     */
    
protected $formatters = array();

    
/**
     * Locale to use instead of the default
     *
     * @var string
     */
    
protected $locale;

    
/**
     * @throws ExceptionExtensionNotLoadedException if ext/intl is not present
     */
    
public function __construct()
    {
        if (!
extension_loaded('intl')) {
            throw new 
ExceptionExtensionNotLoadedException(sprintf(
                
'%s component requires the intl PHP extension',
                
__NAMESPACE__
            
));
        }
    }

    
/**
     * Format a number
     *
     * @param  int|float $number
     * @param  int       $formatStyle
     * @param  int       $formatType
     * @param  string    $locale
     * @param  int       $decimals
     * @return string
     */
    
public function __invoke(
        
$number,
        
$formatStyle null,
        
$formatType  null,
        
$locale      null,
        
$decimals    null
    
) {
        if (
null === $locale) {
            
$locale $this->getLocale();
        }
        if (
null === $formatStyle) {
            
$formatStyle $this->getFormatStyle();
        }
        if (
null === $formatType) {
            
$formatType $this->getFormatType();
        }
        if (!
is_int($decimals) || $decimals 0) {
            
$decimals $this->getDecimals();
        }

        
$formatterId md5($formatStyle "" $locale "" $decimals);

        if (!isset(
$this->formatters[$formatterId])) {
            
$this->formatters[$formatterId] = new NumberFormatter(
                
$locale,
                
$formatStyle
            
);

            if (
$decimals !== null) {
                
$this->formatters[$formatterId]->setAttribute(NumberFormatter::MIN_FRACTION_DIGITS$decimals);
                
$this->formatters[$formatterId]->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS$decimals);
            }
        }

        return 
$this->formatters[$formatterId]->format($number$formatType);
    }

    
/**
     * Set format style to use instead of the default
     *
     * @param  int $formatStyle
     * @return NumberFormat
     */
    
public function setFormatStyle($formatStyle)
    {
        
$this->formatStyle = (int) $formatStyle;
        return 
$this;
    }

    
/**
     * Get the format style to use
     *
     * @return int
     */
    
public function getFormatStyle()
    {
        if (
null === $this->formatStyle) {
            
$this->formatStyle NumberFormatter::DECIMAL;
        }

        return 
$this->formatStyle;
    }

    
/**
     * Set format type to use instead of the default
     *
     * @param  int $formatType
     * @return NumberFormat
     */
    
public function setFormatType($formatType)
    {
        
$this->formatType = (int) $formatType;
        return 
$this;
    }

    
/**
     * Get the format type to use
     *
     * @return int
     */
    
public function getFormatType()
    {
        if (
null === $this->formatType) {
            
$this->formatType NumberFormatter::TYPE_DEFAULT;
        }
        return 
$this->formatType;
    }

    
/**
     * Set number of decimals to use instead of the default.
     *
     * @param  int $decimals
     * @return NumberFormat
     */
    
public function setDecimals($decimals)
    {
        
$this->decimals $decimals;
        return 
$this;
    }

    
/**
     * Get number of decimals.
     *
     * @return int
     */
    
public function getDecimals()
    {
        return 
$this->decimals;
    }

    
/**
     * Set locale to use instead of the default.
     *
     * @param  string $locale
     * @return NumberFormat
     */
    
public function setLocale($locale)
    {
        
$this->locale = (string) $locale;
        return 
$this;
    }

    
/**
     * Get the locale to use
     *
     * @return string|null
     */
    
public function getLocale()
    {
        if (
$this->locale === null) {
            
$this->locale Locale::getDefault();
        }

        return 
$this->locale;
    }
}
Онлайн: 1
Реклама