在 Yii2 中报错:Typed property common\\components\\i18n\\PhpMessageSource::$fallbackBasePath must not be accessed before initialization’
1、在 Yii2 中报错:Typed property common\\components\\i18n\\PhpMessageSource::$fallbackBasePath must not be accessed before initialization’。如图1
2、为 $fallbackBasePath 提供默认值。修改前 public ?string $fallbackBasePath; 修改后 public ?string $fallbackBasePath = null;
<?php namespace common\components\i18n; class PhpMessageSource extends \yii\i18n\PhpMessageSource { public ?string $fallbackBasePath = null; protected function loadMessages($category, $language) { $messages = parent::loadMessages($category, $language); if (empty($messages) && $this->fallbackBasePath !== null) { $fallback = new PhpMessageSource([ 'basePath' => $this->fallbackBasePath, 'forceTranslation' => $this->forceTranslation, 'fileMap' => $this->fileMap, ]); $messages = $fallback->loadMessages($category, $language); } return $messages; } protected function loadFallbackMessages($category, $fallbackLanguage, $messages, $originalMessageFile) { $fallbackMessageFile = $this->getMessageFilePath($category, $fallbackLanguage); $fallbackMessages = $this->loadMessagesFromFile($fallbackMessageFile); if ( $messages === null && $fallbackMessages === null && $fallbackLanguage !== $this->sourceLanguage && strpos($this->sourceLanguage, $fallbackLanguage) !== 0 ) { } elseif (empty($messages)) { return $fallbackMessages; } elseif (!empty($fallbackMessages)) { foreach ($fallbackMessages as $key => $value) { if (!empty($value) && empty($messages[$key])) { $messages[$key] = $value; } } } return (array) $messages; } }
3、不再报错。
近期评论