*
* For split items, if set, this indicates that all of the subitems have been
* loaded.
+ *
*/
private $loadedItems = [];
/**
* Return a suitable LCStore as specified by the given configuration.
*
+ * @since 1.34
* @param array $conf In the format of $wgLocalisationCacheConf
* @param string|false|null $fallbackCacheDir In case 'storeDirectory' isn't specified
* @return LCStore
}
/**
- * @todo Make this a const when HHVM support is dropped (T192166)
- *
* @var array
* @since 1.34
*/
- public static $constructorOptions = [
+ public const CONSTRUCTOR_OPTIONS = [
// True to treat all files as expired until they are regenerated by this object.
'forceRecache',
'manualRecache',
array $clearStoreCallbacks,
LanguageNameUtils $langNameUtils
) {
- $options->assertRequiredOptions( self::$constructorOptions );
+ $options->assertRequiredOptions( self::CONSTRUCTOR_OPTIONS );
$this->options = $options;
$this->store = $store;
* @return array
*/
protected function readPHPFile( $_fileName, $_fileType ) {
- // Disable APC caching
- Wikimedia\suppressWarnings();
- $_apcEnabled = ini_set( 'apc.cache_by_default', '0' );
- Wikimedia\restoreWarnings();
-
include $_fileName;
- Wikimedia\suppressWarnings();
- ini_set( 'apc.cache_by_default', $_apcEnabled );
- Wikimedia\restoreWarnings();
-
$data = [];
if ( $_fileType == 'core' || $_fileType == 'extension' ) {
foreach ( self::$allKeys as $key ) {
if ( in_array( $key, self::$mergeableMapKeys ) ) {
$value = $value + $fallbackValue;
} elseif ( in_array( $key, self::$mergeableListKeys ) ) {
+ // @phan-suppress-next-line PhanTypeMismatchArgumentInternal
$value = array_unique( array_merge( $fallbackValue, $value ) );
} elseif ( in_array( $key, self::$mergeableAliasListKeys ) ) {
$value = array_merge_recursive( $value, $fallbackValue );
if ( !$code ) {
throw new MWException( "Invalid language code requested" );
}
- $this->recachedLangs[$code] = true;
+ $this->recachedLangs[ $code ] = true;
# Initial values
$initialData = array_fill_keys( self::$allKeys, null );
# Load the primary localisation from the source file
$data = $this->readSourceFilesAndRegisterDeps( $code, $deps );
- if ( $data === false ) {
- $this->logger->debug( __METHOD__ . ": no localisation file for $code, using fallback to en" );
- $coreData['fallback'] = 'en';
- } else {
- $this->logger->debug( __METHOD__ . ": got localisation for $code from source" );
+ $this->logger->debug( __METHOD__ . ": got localisation for $code from source" );
- # Merge primary localisation
- foreach ( $data as $key => $value ) {
- $this->mergeItem( $key, $coreData[$key], $value );
- }
+ # Merge primary localisation
+ foreach ( $data as $key => $value ) {
+ $this->mergeItem( $key, $coreData[ $key ], $value );
}
# Fill in the fallback if it's not there already
# Load the secondary localisation from the source file to
# avoid infinite cycles on cyclic fallbacks
$fbData = $this->readSourceFilesAndRegisterDeps( $csCode, $deps );
- if ( $fbData !== false ) {
- # Only merge the keys that make sense to merge
- foreach ( self::$allKeys as $key ) {
- if ( !isset( $fbData[$key] ) ) {
- continue;
- }
-
- if ( is_null( $coreData[$key] ) || $this->isMergeableKey( $key ) ) {
- $this->mergeItem( $key, $csData[$key], $fbData[$key] );
- }
+ # Only merge the keys that make sense to merge
+ foreach ( self::$allKeys as $key ) {
+ if ( !isset( $fbData[ $key ] ) ) {
+ continue;
+ }
+
+ if ( is_null( $coreData[ $key ] ) || $this->isMergeableKey( $key ) ) {
+ $this->mergeItem( $key, $csData[ $key ], $fbData[ $key ] );
}
}
}