mirror of
				https://github.com/yiisoft/yii2.git
				synced 2025-11-04 14:46:19 +08:00 
			
		
		
		
	Fix caching in Formatter::getUnitMessage() (#19445)
				
					
				
			* Fix caching in `Formatter::getUnitMessage()` * Update FormatterTest.php * Update CHANGELOG.md
This commit is contained in:
		@ -35,6 +35,7 @@ Yii Framework 2 Change Log
 | 
			
		||||
- Enh #19416: Update and improve configurations for `yii\console\controllers\MessageController` (WinterSilence)
 | 
			
		||||
- Bug #19403: Fix types in `yii\web\SessionIterator` (WinterSilence)
 | 
			
		||||
- Enh #19420: Update list of JS callbacks in `yii\widgets\MaskedInput` (WinterSilence)
 | 
			
		||||
- Bug #19445: Fix caching in `yii\i18n\Formatter::getUnitMessage()` (WinterSilence)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
2.0.45 February 11, 2022
 | 
			
		||||
 | 
			
		||||
@ -1643,8 +1643,8 @@ class Formatter extends Component
 | 
			
		||||
     */
 | 
			
		||||
    private function getUnitMessage($unitType, $unitFormat, $system, $position)
 | 
			
		||||
    {
 | 
			
		||||
        if (isset($this->_unitMessages[$unitType][$system][$position])) {
 | 
			
		||||
            return $this->_unitMessages[$unitType][$system][$position];
 | 
			
		||||
        if (isset($this->_unitMessages[$unitType][$unitFormat][$system][$position])) {
 | 
			
		||||
            return $this->_unitMessages[$unitType][$unitFormat][$system][$position];
 | 
			
		||||
        }
 | 
			
		||||
        if (!$this->_intlLoaded) {
 | 
			
		||||
            throw new InvalidConfigException('Format of ' . $unitType . ' is only supported when PHP intl extension is installed.');
 | 
			
		||||
@ -1676,7 +1676,7 @@ class Formatter extends Component
 | 
			
		||||
            $message[] = "$key{{$value}}";
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $this->_unitMessages[$unitType][$system][$position] = '{n, plural, ' . implode(' ', $message) . '}';
 | 
			
		||||
        return $this->_unitMessages[$unitType][$unitFormat][$system][$position] = '{n, plural, ' . implode(' ', $message) . '}';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 | 
			
		||||
@ -34,14 +34,15 @@ class FormatterTest extends TestCase
 | 
			
		||||
            'timeZone' => 'UTC',
 | 
			
		||||
            'language' => 'ru-RU',
 | 
			
		||||
        ]);
 | 
			
		||||
        if (!isset($this->formatter)) {
 | 
			
		||||
            $this->formatter = new Formatter(['locale' => 'en-US']);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected function tearDown()
 | 
			
		||||
    {
 | 
			
		||||
        parent::tearDown();
 | 
			
		||||
        IntlTestHelper::resetIntlStatus();
 | 
			
		||||
        $this->formatter = null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testFormat()
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user