Вход Регистрация
Файл: concrete5.7.5.6/concrete/vendor/zendframework/zend-i18n/src/View/Helper/DateFormat.php
Строк: 134
<?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 
DateTime;
use 
IntlDateFormatter;
use 
Locale;
use 
ZendI18nException;
use 
ZendViewHelperAbstractHelper;

/**
 * View helper for formatting dates.
 */
class DateFormat extends AbstractHelper
{
    
/**
     * Locale to use instead of the default
     *
     * @var string
     */
    
protected $locale;

    
/**
     * Timezone to use
     *
     * @var string
     */
    
protected $timezone;

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

    
/**
     * @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 date
     *
     * @param  DateTime|int|array $date
     * @param  int                    $dateType
     * @param  int                    $timeType
     * @param  string                 $locale
     * @param  string|null            $pattern
     * @return string
     */
    
public function __invoke(
        
$date,
        
$dateType IntlDateFormatter::NONE,
        
$timeType IntlDateFormatter::NONE,
        
$locale   null,
        
$pattern  null
    
) {
        if (
$locale === null) {
            
$locale $this->getLocale();
        }

        
$timezone    $this->getTimezone();
        
$formatterId md5($dateType "" $timeType "" $locale ."" $pattern);

        if (!isset(
$this->formatters[$formatterId])) {
            
$this->formatters[$formatterId] = new IntlDateFormatter(
                
$locale,
                
$dateType,
                
$timeType,
                
$timezone,
                
IntlDateFormatter::GREGORIAN,
                
$pattern
            
);
        }

        
// DateTime support for IntlDateFormatter::format() was only added in 5.3.4
        
if ($date instanceof DateTime && (PHP_VERSION_ID 50304)) {
            
$date $date->getTimestamp();
        }

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

    
/**
     * Set locale to use instead of the default
     *
     * @param  string $locale
     * @return DateFormat
     */
    
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;
    }

    
/**
     * Set timezone to use instead of the default
     *
     * @param  string $timezone
     * @return DateFormat
     */
    
public function setTimezone($timezone)
    {
        
$this->timezone = (string) $timezone;

        
// The method setTimeZoneId is deprecated as of PHP 5.5.0
        
$setTimeZoneMethodName = (PHP_VERSION_ID 50500) ? 'setTimeZoneId' 'setTimeZone';

        foreach (
$this->formatters as $formatter) {
            
$formatter->$setTimeZoneMethodName($this->timezone);
        }

        return 
$this;
    }

    
/**
     * Get the timezone to use
     *
     * @return string|null
     */
    
public function getTimezone()
    {
        if (!
$this->timezone) {
            return 
date_default_timezone_get();
        }

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