Manual:Writing maintenance scripts/cs

Tato příručka krok za krokem popisuje, jak psát údržbářské skripty, které se spouštějí na straně serveru na příkazovém řádku. Jsou založené na třídě  (viz ), která je implementovaná od MediaWiki verze 1.16

Standardní text
Projdeme si skript údržby, který jednoduše vypíše "Hello, World". Tento skript obsahuje minimální množství kódu potřebného ke spuštění a hlavičku s uvedením autorských práv, která by neměla nikdy chybět (viz také hlavičky autorských práv):

Níže uvedený příklad programu vytiskne "Hello, World!":

$ php helloWorld.php Hello, World! 

Jádro MediaWiki


Rozšíření MediaWiki


Vysvětlení standardního textu
Zahrne soubor. V něm je definována třída, která poskytuje základ pro všechny skripty údržby, včetně zařízení pro analýzu argumentů příkazového řádku, čtení vstupu konzoly, připojení k databázi atd.

Naše třída je pouze rozšířením třídy Maintenance

Řekne třídě Maintenance, aby spouštěla skript přes naši třídu, jen když poběží na příkazovém řádku.

Interně,  načte další soubor, který automaticky načte třídy MediaWiki a konfiguraci, a pak

Metoda  je vstupním bodem pro údržbové skripty a zde bude hlavní logika vašeho skriptu. Vyhněte se spouštění jakéhokoli kódu z konstruktoru.

Když je náš program spouštěn z příkazového řádku, základní framework údržby se postará o inicializaci jádra MediaWiki a konfigurace atd., a poté tuto metodu vyvolá.



Příkaz nápovědy
Jednou z vestavěných funkcí, kterou mají všechny skripty údržby, je možnost. Výše uvedený vzorový příklad by vytvořil následující stránku nápovědy:

$ php helloWorld.php --help

Usage: php helloWorld.php […]

Generic maintenance parameters: --help (-h): Display this help message --quiet (-q): Whether to suppress non-error output --conf: Location of LocalSettings.php, if not default --wiki: For specifying the wiki ID   --server: The protocol and server name to use in URL --profiler: Profiler output format (usually "text") …



Přidáváme popis
„Na co je ale dobrý tenhle údržbářský skript?” Už slyším, jak se ptáte.

Proto můžeme pomocí metody  do našeho konstruktoru přidat popis, který se zobrazí hned na začátku výstupu při použití parametru " ":

Takže teď už bude vracet náš popis:

$ php helloWorld.php --help

Say hello.

Usage: php helloWorld.php [--help] …



Volby a zpracování jejich hodnot
Pozdravit celičký svět je nepochybně správné a dobré, ale my chceme, aby ten skript uměl pozdravit i konkrétního jednotlivce.

Abyste přidali další volbu příkazového řádku, přidejte do třídy  konstruktor, co zavolá ze třídy   metodu , která zaaktualizuje metodu  , aby zahrnula i vaši novou volbu. Parametry  jsou , takže:

V tuto chvíli se po spuštění výstup skriptu  bude měnit, podle toho jakou předáte hodnotu argumentu:

 $ php helloWorld.php Hello, World! $ php helloWorld.php --name=Mark Hello, Mark! $ php helloWorld.php --help

Say hello.

Usage: php helloWorld.php […] … Script specific parameters: --name: Who to say Hello to

Rozšíření
Pokud váš údržbářský skript vyžaduje funkce, které nabízí nějaké rozšíření, měli byste přidat také požadavek, aby bylo nejprve tohle rozšíření nainstalováno:

To poskytuje helfpul chybovou zprávu, když rozšíření není povoleno. Například během místního vývoje nemusí být určité rozšíření ještě povoleno v LocalSettings.php nebo při provozování wiki farmy může být rozšíření povoleno na podmnožině wiki.

Uvědomte si, že žádný kód nelze spustit jinak než metodou. Pokusy o volání základních služeb, tříd nebo funkcí MediaWiki nebo volání vlastního kódu rozšíření před tím způsobí chyby nebo jsou nespolehlivé a nepodporované (např. mimo deklaraci třídy nebo v konstruktoru).



Psaní testů
Je doporučeno abyste pro vaše údržbářské skripty psali i testy, tak jako u každé jiné třídy. Nápovědu a ukázkové příklady, jak se to dělá najdete na stránce Jak psát testy pro údržbářské skripty.