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 100% complete.
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ému ContextSource, 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().

  1. Použijte OutputPage::addJsConfigVars($keys,[$value]) , například při použití háčku BeforePageDisplay
  2. Použijte háček ResourceLoaderGetConfigVars
  3. Použijte háček MakeGlobalVariablesScript

Související odkazy