Příručka:Konfigurace pro vývojáře
- 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 objektuConfig
. Většina kontextů implementujegetConfig()
. - Namísto kontroly "wgFoo" se zeptáte objektu Config na "Foo" bez jakékoli předpony wg.