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

Ukázkový skript
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 (jaké lze použít hlavičky článek viz hlavičky autorských práv):

Skript vrací pouze "Hello, World!", ale již lze použít  (a vypsat další parametry pro jeho použití na příkazovém řádku). Viz ukázkový výstup:

 $ php helloWorld.php Hello, World! $ php helloWorld.php --help

Usage: php helloWorld.php [--conf|--dbgroupdefault|--dbpass|--dbuser|--globals|--help|--memory-limit|--mwdebug|--profiler|--quiet|--server|--wiki]

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   --globals: Output globals at the end of processing for debugging --memory-limit: Set a specific memory limit for the script, "max" for no limit or "default" to avoid changing it   --server: The protocol and server name to use in URLs, e.g.        https://en.wikipedia.org. This is sometimes necessary because server name detection may fail in command line scripts. --profiler: Profiler output format (usually "text") --mwdebug: Enable built-in MediaWiki development settings

Script dependent parameters: --dbuser: The DB user to use for this script --dbpass: The password to use for this script --dbgroupdefault: The default DB group to use.

$

Ve stručnosti:


 * Zahrne soubor . V něm je definována třída , která obsahuje metody pro analýzu předaných argumentů, čtení dat z konzole, pro zajištění přístupu do databáze atd. Je žádoucí ve skriptu byla k   uvedena plná, nikoliv relativní, cesta.


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


 * sdělte třídě Maintenance, aby spustila skript pomocí naší třídy, pouze pokud je spouštěn z příkazového řádku. Interně,   načte další soubor , který automaticky načte třídy MediaWiki a konfiguraci, a pak



Přidáváme popis
"Ale k čemu je tento skript údržby?" Slyším, jak se ptáš.

Můžeme umístit popis na začátek výstupu " " pomocí metody  v našem konstruktoru:

Výstup nám nyní poskytuje popis:

$ php helloWorld.php --help

Say hello.

Usage: php helloWorld.php [--conf|--dbgroupdefault|--dbpass|--dbuser|--globals|--help|--memory-limit|--mwdebug|--profiler|--quiet|--server|--wiki] …

Volby a zpracování jejich hodnot
Pozdravit svět je správné a dobré, ale chceme být schopni pozdravit i jednotlivce.

Chcete-li přidat volbu příkazového řádku, přidejte do  konstruktor, který volá     a aktualizujte metodu , aby používala novou možnost. Parametry  jsou , takže:

Tentokrát se po spuštění změní výstup skriptu  v závislosti na poskytnutém argumentu:

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

Say hello.

Usage: php helloWorld.php [--conf|--dbgroupdefault|--dbpass|--dbuser|--globals|--help|--memory-limit|--mwdebug|--name|--profiler|--quiet|--server|--wiki] … Script specific parameters: --name: Who to say Hello to

Rozšíření
Pokud je váš skript údržby pro rozšíření, měli byste přidat požadavek, aby bylo rozšíření nainstalováno:

Většinou to poskytuje pěkné chybové hlášení, když rozšíření není na dané wiki povoleno (pravděpodobně na wiki farmách). To bude fungovat pouze pro rozšíření, která používají.

Uvědomte si, že třídy definované vaším rozšířením nebudou dostupné, dokud nenarazíte na funkci. Pokusy o vytvoření instancí dříve, např. v konstruktoru, způsobí, že třída nenalezne výjimky.

Psaní testů
Doporučuje se psát testy pro vaše skripty údržby, jako u jakékoli jiné třídy. Nápovědu a příklady naleznete v příručce Skripty údržby.