assertRequiredOptions( Parser::CONSTRUCTOR_OPTIONS ); wfDebug( __CLASS__ . ": using default preprocessor" ); $this->svcOptions = $svcOptions; $this->magicWordFactory = $magicWordFactory; $this->contLang = $contLang; $this->urlUtils = $urlUtils; $this->specialPageFactory = $spFactory; $this->linkRendererFactory = $linkRendererFactory; $this->nsInfo = $nsInfo; $this->logger = $logger; $this->badFileLookup = $badFileLookup; $this->languageConverterFactory = $languageConverterFactory; $this->languageNameUtils = $languageNameUtils; $this->hookContainer = $hookContainer; $this->tidy = $tidy; $this->wanCache = $wanCache; $this->userOptionsLookup = $userOptionsLookup; $this->userFactory = $userFactory; $this->titleFormatter = $titleFormatter; $this->httpRequestFactory = $httpRequestFactory; $this->trackingCategories = $trackingCategories; $this->signatureValidatorFactory = $signatureValidatorFactory; $this->userNameUtils = $userNameUtils; } /** * Creates a new parser * * @note Use this function to get a new Parser instance to store * in a local class property. Where possible use lazy creation and * create the Parser only when needed, not directly in service wiring. * * @return Parser * @since 1.32 */ public function create(): Parser { self::$inParserFactory++; try { return new Parser( $this->svcOptions, $this->magicWordFactory, $this->contLang, $this, $this->urlUtils, $this->specialPageFactory, $this->linkRendererFactory, $this->nsInfo, $this->logger, $this->badFileLookup, $this->languageConverterFactory, $this->languageNameUtils, $this->hookContainer, $this->tidy, $this->wanCache, $this->userOptionsLookup, $this->userFactory, $this->titleFormatter, $this->httpRequestFactory, $this->trackingCategories, $this->signatureValidatorFactory, $this->userNameUtils ); } finally { self::$inParserFactory--; } } /** * Get the main shared instance. This is unsafe when the caller is not in * a top-level context, because re-entering the parser will throw an * exception. * * @note This function is used to get metadata from the parser. Avoid * using this function to parse wikitext. (Generally avoid using this * function at all in new code.) * * @since 1.39 * @return Parser */ public function getMainInstance() { if ( $this->mainInstance === null ) { $this->mainInstance = $this->create(); } return $this->mainInstance; } /** * Get the main shared instance, or if it is locked, get a new instance * * @note This function was used to parse wikitext. The instance it * returned should be used only in local scope. Do not hold a * reference to this parser in class properties. In general, * avoid using this method and use ::create() instead. * * @since 1.39 * @return Parser */ public function getInstance() { $instance = $this->getMainInstance(); if ( $instance->isLocked() ) { $instance = $this->create(); } return $instance; } } /** @deprecated class alias since 1.43 */ class_alias( ParserFactory::class, 'ParserFactory' );