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. For example, during local development a particular extension might not yet be enabled in LocalSettings.php, or when operating a wiki farm an extension might be enabled on a subset of wikis.

Pamatujte prosím na to, že se třídami co jsou definované v tomto rozšíření nebudete moct pracovat, dokud se nezavolá funkce. Pokud tedy vytvoříte instanci třídy dříve, např. v konstruktoru, bude výsledkem to že vaše třída neošetří správným způsobem výjimky.



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.