*/ private array $mObjects = []; private ?MagicWordArray $mDoubleUnderscoreArray = null; private Language $contLang; private HookRunner $hookRunner; /** * @internal For ServiceWiring only */ public function __construct( Language $contentLanguage, HookContainer $hookContainer ) { $this->contLang = $contentLanguage; $this->hookRunner = new HookRunner( $hookContainer ); } public function getContentLanguage(): Language { return $this->contLang; } /** * Get a MagicWord object for a given internal ID * * @param string $id The internal name of the magic word * @return MagicWord */ public function get( $id ): MagicWord { if ( !isset( $this->mObjects[$id] ) ) { $mw = new MagicWord( null, [], false, $this->contLang ); $mw->load( $id ); $this->mObjects[$id] = $mw; } return $this->mObjects[$id]; } /** * Get an array of parser variable IDs * * @return string[] */ public function getVariableIDs(): array { if ( !$this->mVariableIDsInitialised ) { # Get variable IDs $this->hookRunner->onMagicWordwgVariableIDs( $this->mVariableIDs ); $this->hookRunner->onGetMagicVariableIDs( $this->mVariableIDs ); $this->mVariableIDsInitialised = true; } return $this->mVariableIDs; } /** * Get an array of parser substitution modifier IDs * * @return string[] * @deprecated since 1.42, use {@see getSubstArray} instead */ public function getSubstIDs(): array { wfDeprecated( __METHOD__, '1.42' ); return [ 'subst', 'safesubst' ]; } /** * @internal for use in {@see Parser::braceSubstitution} only */ public function getSubstArray(): MagicWordArray { return $this->newArray( [ 'subst', 'safesubst' ] ); } /** * Allow external reads of TTL array * * @param string $id * @return int * @deprecated Since 1.40 */ public function getCacheTTL( $id ) { return -1; } /** * Get a MagicWordArray of double-underscore entities * * @return MagicWordArray */ public function getDoubleUnderscoreArray(): MagicWordArray { if ( $this->mDoubleUnderscoreArray === null ) { $this->hookRunner->onGetDoubleUnderscoreIDs( $this->mDoubleUnderscoreIDs ); $this->mDoubleUnderscoreArray = $this->newArray( $this->mDoubleUnderscoreIDs ); } return $this->mDoubleUnderscoreArray; } /** * Get a new MagicWordArray with provided $names * * @param string[] $names * @return MagicWordArray */ public function newArray( array $names = [] ): MagicWordArray { return new MagicWordArray( $names, $this ); } } /** @deprecated class alias since 1.40 */ class_alias( MagicWordFactory::class, 'MagicWordFactory' );