Use the object factory to inject service into TrivialLanguageConverter class. The other language converter classes does not use service directly. The classes are using indirectly services in some function of the parent class, which needs injection as well (tracked with T294185). Needs fallback to global state in TrivialLanguageConverter, because the class is used in extensions integration tests Change-Id: If72d054d062a4f357e12c5b168e118bfafffd626
39 lines
881 B
PHP
39 lines
881 B
PHP
<?php
|
|
|
|
use MediaWiki\Languages\LanguageConverterFactory;
|
|
use MediaWiki\MediaWikiServices;
|
|
|
|
trait LanguageConverterTestTrait {
|
|
|
|
private $codeRegex = '/^(.+)ConverterTest$/';
|
|
|
|
protected function code(): string {
|
|
if ( preg_match( $this->codeRegex, get_class( $this ), $m ) ) {
|
|
return mb_strtolower( $m[1] );
|
|
}
|
|
return 'en';
|
|
}
|
|
|
|
/** Create and return LanguageConveter to be tested.
|
|
*
|
|
* @return ILanguageConverter
|
|
*/
|
|
protected function getLanguageConverter(): ILanguageConverter {
|
|
$code = $this->code();
|
|
|
|
$language = MediaWikiServices::getInstance()->getLanguageFactory()
|
|
->getLanguage( $code );
|
|
|
|
$factory = new LanguageConverterFactory(
|
|
MediaWikiServices::getInstance()->getObjectFactory(),
|
|
false,
|
|
false,
|
|
false,
|
|
static function () use ( $language ) {
|
|
return $language;
|
|
}
|
|
);
|
|
|
|
return $factory->getLanguageConverter( $language );
|
|
}
|
|
}
|