Příručka:Konfigurace pro vývojáře
- Pro dokumentaci o konfiguraci MediaWiki viz Manual:Configuration.
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
use MediaWiki\MediaWikiServices;
$config = MediaWikiServices::getInstance()->getMainConfig();
// stejné jako: $config = MediaWikiServices::getInstance()->getConfigFactory()->makeConfig( 'main' );
Můžete použít MainConfigNames, například:
$scriptPath = MediaWikiServices::getInstance()->getMainConfig()->get( MainConfigNames::ScriptPath );
Výjimky
Toto by se nemělo používat k načítání objektů globálních proměnných, jako je $wgUser nebo $wgRequest, ani to nelze použít k načítání proměnných, jako je $IP.
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
}
Konvence pojmenování:
- 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ů.
- Je zvykem dělat název pro ConfigRegistry, zde "vaše rozšíření", malými písmeny a bez mezer.
Vlastní předpony
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.
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)
function 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).
Přístup k možnostem konfigurace
Přístup k hodnotám konfigurace z rozšíření funguje stejným způsobem jako přístup k těmto hodnotám z jádra MediaWiki:
- Přístup ke konfiguraci. V některých kontextech, například při prodloužení SpecialPage nebo ApiBase, můžete jednoduše zavolat
$this->getConfig(). Opět, pokud nemáte přístup k žádnémuContextSource, můžete zavolat hlavní konfiguraci pomocíMediaWikiServices::getInstance()->getMainConfig(). - Použijte
get()s názvem konfigurace, ale bez předpony.
Například:
use MediaWiki\MediaWikiServices;
$config = MediaWikiServices::getInstance()->getMainConfig();
// nebo pokud můžete: $config = $this->getConfig();
$myConfigOption = $config->get( 'YourExtensionSomeConfigKey' ); // bez předpisu!
Jako poslední možnost to můžete nazvat jako globální:
global $wgYourExtensionSomeConfigKey;
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.
JavaScript
Mnoho základních konfiguračních proměnných, jako například wgScript a wgServer., je přístupných proměnné v mw.config.get() v ResourceLoaderu.
Existují tři způsoby, jak může rozšíření nebo vzhled zpřístupnit proměnné, včetně konfiguračních proměnných, aby byly k dispozici pro použití uživatelem mw.config.get().
- Použijte OutputPage::addJsConfigVars($keys,[$value]), například při použití háčku BeforePageDisplay
- Použijte háček ResourceLoaderGetConfigVars
- Použijte háček MakeGlobalVariablesScript