Manual:Writing maintenance scripts/fr

La version 1.16 de MediaWiki a introduit la class   pour rendre plus simple l'écriture de lignes de commande pour les scripts de maintenance MediaWiki.

Script exemple
Pour décrire ces csripts de maintenance, nous décrirons les étape d'écriture de, un script qui ne fait qu'une chose, afficher "Salut, Monde". Ce programme contiendra le minimum de code nécessaire à son lancement ainsi que les en-têtes requises pour les droits d'auteur (pour des d'autres en-têtes possibles, lire en tête de droit d'auteur):

Le programme, malgré sa simplicité, aura déja une option  et d'autres options de ligne de commande. Une sortie possible:

 $ 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 dependant 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.

$

Un aperçu:


 * Bien sur, si nous écrivons un script de maintenance, nous devons inclure . Cela permet de ne pas avoir à s'occuper de la mise en place d'Autoloading et similaires. Il est conseillé d'utiliser le chemin complet vers.


 * Nous écrasons la classe Maintenance, puis dans


 * utiliser la class Maintenance de façon a lancer la classe, uniquement si le script est utilisé en ligne de commande. Internally,   loads another file  which autoloads MediaWiki classes and configuration, and then


 * La fonction  que nous avons fourni est lancée.

Ajouter une description
« Mais quel est le but de ce script de maintenance ? » Je vous entends déjà le demander.

We can put a description at the top of the " " output by using the  method in our constructor:

Maintenant la sortie nous donne la description :

$ php helloWorld.php --help

Say hello.

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

Analyse des option et Argument
Saluer le monde est tout sympathique et très bien, mais nous voulons être capable de saluer également des individus.

Pour ajouter une option, ajoutez un constructeur à la  qui appelle   de   et qui met à jour la méthode   pour utiliser la nouvelle option. Les paramètres de  sont , donc :

Cette fois, à l'exécution, la sortie du script  change en fonction des arguments fournis :

 $ 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

Extensions
Si votre script de maintenance concerne une extension, alors vous devez ajouter la condition, que celle-ci soit installée :

Mostly this provides a nice error message when the extension is not enabled on that wiki (likely on wiki farms). Ceci ne fonctionne que pour les extensions qui utilisent.

Be aware that classes defined by your extension will not be available until hitting the execute-function. Attempts to create instances prior to this, e.g. in the constructor, will cause class not found exceptions.

Writing tests
It's recommended to write tests for your maintenance scripts, like with any other class. See the Manual:PHP unit testing/Writing unit tests guide for help and examples.