Manual:Konfigurasi untuk pengembang
- Untuk dokumentasi tentang konfigurasi MediaWiki, lihat Manual:Configuration.
Ini adalah panduan untuk pengembang inti dan ekstensi tentang cara membuat dan mengakses pengaturan konfigurasi.
Untuk inti
Untuk mengakses peubah konfigurasi seperti $wgFoo:
$config = $this->getConfig(); // ini adalah objek Config
$foo = $config->get( 'Foo' );
Jika Anda tidak ada akses ke ContextSource mana pun, Anda bisa mendapatkan objek Config dengan
use MediaWiki\MediaWikiServices;
$config = MediaWikiServices::getInstance()->getMainConfig();
// same as: $config = MediaWikiServices::getInstance()->getConfigFactory()->makeConfig( 'main' );
Anda dapat menggunakan MainConfigNames, misalnya:
$scriptPath = MediaWikiServices::getInstance()->getMainConfig()->get( MainConfigNames::ScriptPath );
Pengecualian
Ini tidak boleh digunakan untuk mengambil objek peubah global seperti $wgUser atau $wgRequest, juga tidak dapat digunakan untuk mengambil peubah seperti $IP.
Untuk pengaya
Tetapkan pilihan konfigurasi menggunakan extension.json (disarankan)
Pengaya yang punya berkas extension.json harus menyiapkan peubah konfigurasi seperti yang dijelaskan di bagian ini.
Jika pengaya Anda disebut YourExtension, di extension.json Anda akan menulis:
{
"config": {
"YourExtensionSomeConfigKey": {
"value": "SomeValue",
"description": "The description for the configuration",
}
},
"ConfigRegistry": {
"yourextension": "GlobalVarConfig::newInstance"
},
"manifest_version": 2
}
Konvensi penamaan:
- Sangat disarankan untuk memulai nama kunci konfigurasi dengan nama pengaya Anda (seperti dalam contoh), untuk memastikan kunci konfigurasi bersifat unik di antara semua kunci di semua aplikasi. Tidak melakukan ini adalah hal yang buruk, dan mungkin akan merusak penggunaan atribut.
- Merupakan kebiasaan untuk membuat nama untuk ConfigRegistry, di sini "yourextension", dengan huruf kecil dan tanpa spasi.
Awalan khusus
Jika awalan untuk kunci konfigurasi Anda bukan "wg" bawaan, Anda dapat menentukannya dengan kunci config_prefix atau _prefix, tergantung pada versi skema (lihat dokumen).
Anda harus memastikannya tidak bertabrakan dengan pengaya yang ada.
Mengatur pilihan konfigurasi menggunakan global
Jika Anda bisa, gunakan berkas extension.json untuk konfigurasi (lihat di atas).
Jika tidak bisa, gunakan cuplikan ini (hanya berfungsi dengan peubah berawalan wg):
$wgConfigRegistry['yourextension'] = 'GlobalVarConfig::newInstance';
// Sekarang, kapan pun Anda menginginkan objek konfigurasi Anda
$config = ConfigFactory::getDefaultInstance()->makeConfig( 'yourextension' );
Awalan khusus
Di masa lalu, beberapa pengaya menggunakan "eg" alih-alih "wg". Kami ingin beralih dari awalan, tetapi Anda masih dapat terus menggunakannya:
// Dalam berkas penyiapan pengaya Anda (ExtName.php)
function wfExtNameConfigBuilder() {
return new GlobalVarConfig( 'eg' ); // ganti "eg" dengan awalan pilihan pribadi apa pun yang Anda gunakan
}
$wgConfigRegistry['ext-name'] = 'wfExtNameConfigBuilder';
Jika Anda menggunakan pendaftaran pengaya, ada bidang prefix atau config_prefix (tergantung pada versi skema) yang dapat Anda gunakan sebagai gantinya.
Akses pilihan konfigurasi
Mengakses nilai konfigurasi dari pengaya bekerja dengan cara yang sama seperti mengakses nilai tersebut dari inti MediaWiki:
- Akses konfigurasi. Dalam beberapa konteks seperti saat memperluas SpecialPage atau ApiBase, Anda cukup memanggil
$this->getConfig(). Sekali lagi, jika Anda tidak memiliki akses keContextSource, Anda dapat memanggil konfigurasi utama denganMediaWikiServices::getInstance()->getMainConfig(). - Gunakan
get()dengan nama konfigurasi tetapi tanpa awalan.
Misalnya:
use MediaWiki\MediaWikiServices;
$config = MediaWikiServices::getInstance()->getMainConfig();
// or if you can: $config = $this->getConfig();
$myConfigOption = $config->get( 'YourExtensionSomeConfigKey' ); // without prefix!
Sebagai upaya terakhir, Anda dapat menyebutnya sebagai global:
global $wgYourExtensionSomeConfigKey;
Pengujian
Saat mengawakekutu, Anda menggunakan yang berikut ini untuk menguji apakah Anda mengakses contoh Konfigurasi yang tepat. Anda harus melakukan ini sebagai ganti $wgConfigRegistry yang ditampilkan di bagian untuk pengaya di atas.
$wgConfigRegistry['ext-name'] = function() {
return new HashConfig( array(
// Rangkaian peubah dan nilai konfigurasi
'Foo' => 'baz'
) );
};
Jika Anda mengakses contoh Konfigurasi yang salah, ConfigException akan dihasilkan.
Untuk mengubahsuai peubah konfigurasi dalam pengujian PhpUnit di pengaya menggunakan versi manifes 1 (atau di inti MediaWiki), Anda dapat melakukan hal berikut dalam kasus pengujian yang memperluas MediaWikiIntegrationTestCase:
$this->setMwGlobals( [ 'wgFoo' => 'baz' ] );
Mengubahsuai nilai konfigurasi secara terprogram
Satu-satunya penerapan Config yang mendukung modification of values adalah HashConfig, yang sebagian besar digunakan dalam pengujian.
Salah satu cara untuk mengubah nilai dari jaaa MainConfig adalah melalui pengait MediaWikiServices, tetapi hal ini tidak disarankan. Sebaliknya, pengait harus digunakan untuk memungkinkan pengubahsuaian nilai-nilai relevan yang lebih terkendali dan terang-terangan.
JavaScript
Many core configuration variables, such as wgScript and wgServer. are accessible to ResourceLoader's mw.config.get().
There are three ways in which an extension or skin can expose variables, including configuration variables, so that they are available for use by mw.config.get().
- Use OutputPage::addJsConfigVars($keys,[$value]), for example when using the BeforePageDisplay hook
- Use the ResourceLoaderGetConfigVars hook
- Use the MakeGlobalVariablesScript hook