Jump to content

Příručka:Konfigurace pro vývojáře

From mediawiki.org
This page is a translated version of the page Manual:Configuration for developers and the translation is 96% complete.
Outdated translations are marked like this.
Pro dokumentaci o konfiguraci MediaWiki viz [[Manual:Configuration |Příručka:Konfigurování]].

Toto je průvodce pro vývojáře jádra a rozšíření o vytváření a přístupu k nastavení konfigurace.

Pro jádro

Chcete-li získat přístup ke konfigurační proměnné, jako je $wgFoo:

$config = $this->getConfig(); // toto je objekt Config
$foo = $config->get( 'Foo' );

Pokud nemáte přístup k žádnému ContextSource, můžete získat objekt Config s

$config = MediaWikiServices::getInstance()->getMainConfig();

Toto by se nemělo používat k načítání objektů globálních proměnných, jako je $wgUser nebo $wgRequest .

Pro rozšíření

Konfigurace pomocí extension.json (doporučeno)

Rozšíření, která mají soubor extension.json, by měla nastavit konfigurační proměnné, jak je popsáno v této části.

Pokud se vaše rozšíření jmenuje YourExtension, do extension.json byste napsali:

{
	"config": {
		"YourExtensionSomeConfigKey": {
			"value": "SomeValue",
			"description": "The description for the configuration",
		}
	},
	"ConfigRegistry": {
		"yourextension": "GlobalVarConfig::newInstance"
	},
	"manifest_version": 2 
}

Naming conventions:

  • Důrazně se doporučuje začínat název konfiguračního klíče názvem vašeho rozšíření (jako v příkladu), abyste zajistili, že konfigurační klíč bude jedinečný mezi všemi klíči všech aplikací. Nedělat to je špatný nápad a pravděpodobně to přeruší používání atributů.
  • It is customary to make the name for the ConfigRegistry, here "yourextension", lowercase and without spaces.

Custom prefixes

Pokud předpona pro vaše konfigurační klíče není výchozí "wg", můžete ji zadat pomocí klíče config_prefix nebo _prefix v závislosti na verzi schématu (viz dokumenty). Měli byste se ujistit, že nekolidují s žádným existujícím rozšířením.

Retrieve configuration option

V PHP, kdykoli chcete své konfigurační hodnoty:

use MediaWiki\MediaWikiServices;
$config = MediaWikiServices::getInstance()->getConfigFactory()->makeConfig( 'yourextension' );
$myConfigOption = $config->get( 'YourExtensionSomeConfigKey' ); // without prefix!

If the above does not work, you can call it as a global:

global $wgYourExtensionSomeConfigKey;


Konfigurace pomocí globals

Pokud můžete, použijte pro konfiguraci soubor extension.json (viz výše). Pokud nemůžete, použijte tento fragment (funguje pouze s proměnnými s předponou wg):

$wgConfigRegistry['yourextension'] = 'GlobalVarConfig::newInstance';

// Nyní, kdykoli budete chtít svůj konfigurační objekt
$config = ConfigFactory::getDefaultInstance()->makeConfig( 'yourextension' );

Vlastní předpony

V minulosti některá rozšíření používala "eg" místo "wg". Chceme opustit předpony, ale stále je můžete používat:

// V instalačním souboru vašeho rozšíření (ExtName.php)
wfExtNameConfigBuilder() {
	return new GlobalVarConfig( 'eg' ); // nahraďte "např." jakoukoli vlastní předponou
}
$wgConfigRegistry['ext-name'] = 'wfExtNameConfigBuilder';

Pokud používáte registraci rozšíření, můžete místo toho použít pole prefix nebo config_prefix (v závislosti na verzi schématu).

Testování

Při ladění používáte následující k testování, zda přistupujete ke správné instanci Config. Měli byste to udělat místo $wgConfigRegistry zobrazené v sekci pro rozšíření výše.

$wgConfigRegistry['ext-name'] = function() { 
	return new HashConfig( array( 
		// Pole konfiguračních proměnných a hodnot
		'Foo' => 'baz'
	) );
};

Pokud přistupujete k nesprávné instanci Config, bude vytvořen ConfigException.

Pro úpravu konfiguračních proměnných v testech PhpUnit v rozšířeních používajících manifest verze 1 (nebo v jádru MediaWiki) můžete v testovacích případech, které rozšiřují MediaWikiIntegrationTestCase, provést následující:

$this->setMwGlobals( [ 'wgFoo' => 'baz' ] );


Programová úprava konfiguračních hodnot

Jediná implementace Config, která podporuje modification of values, je HashConfig, která se většinou používá v testech.

Jeden způsob, jak upravit hodnoty ze služby MainConfig, je pomocí háčku MediaWikiServices, ale to se nedoporučuje. Místo toho by měl být použit háček, který umožní řízenější a explicitnější úpravu příslušných hodnot.

Aktualizace z dřívější verze MediaWiki 1.23

Verze MediaWiki:
1.23

V MediaWiki 1.23 bylo představeno nové rozhraní Config pro přístup k možnostem konfigurace. To nám umožnilo abstrahovat backendy, ve kterých ukládáme možnosti konfigurace.

Kód starší verze 1.23 by vypadal takto:

class ApiMyModule extends ApiBase {
	public function execute() {
		global $wgFoo;
		if ( $wgFoo ) {
			// vytvoří
		}
	}
}

Kód 1.23+ by měl vypadat takto:

class ApiMyModule extends ApiBase {
	public function execute() {
		$config = $this->getConfig(); // toto je objekt Config
		if ( $config->get( 'Foo' ) ) {
			// vytvoří
		}
	}
}

Zde si všimnete několika změn:

  • Použijeme $this->getConfig() k získání výchozího objektu Config. Většina kontextů implementuje getConfig().
  • Namísto kontroly "wgFoo" se zeptáte objektu Config na "Foo" bez jakékoli předpony wg.

Související odkazy