Manual:Writing maintenance scripts/fr

Ceci est un tutoriel pas à pas sur la manière d'écrire un script de maintenance basé sur la classe  (voir ) introduite dans la version 1.16 de MediaWiki pour rendre plus simple l'écriture des lignes de commande des scripts de maintenance MediaWiki.

Squelette de code
Nous suivrons l'exemple d'un script de maintenance  qui ne fait qu'afficher « Hello, World ». Ce programme contient le code minimal nécessaire (voir aussi En-têtes des droits d'auteur):

Le programme ci-dessous imprime « Hello, World! ».

$ php helloWorld.php Hello, World! 

Noyau MediaWiki


Extension MediaWiki


Explication du squelette de code
Nous incluons. Cela définit  qui contient les bases de tous les scripts de maintenance, y compris les facilités pour analyser syntaxiquement les arguments de la ligne de commande, la lecture des valeurs d'entrée sur la console, la connexion à une base de données, etc.

Nous déclarons notre sous-classe Maintenance.

Nous demandons à la classe Maintenance d'exécuter le script en utilisant notre classe, seulement si l'exécution a lieu à partir de la ligne de commande.

En interne,  charge un autre fichier  qui charge automatiquement les classes et les paramètres MediaWiki, puis

La méthode  est le point d'entrée des scripts de maintenance et c'est là que sera codée la logique principale de votre script. Evitez d'exécuter du code à partir du constructeur.

Lorsque notre programme sera lancé depuis la ligne de commande, l'environnement de maintenance du noyau prendra en charge l'initialisation du noyau MediaWiki, celui de la configuration, etc, puis il invoquera cette méthode.



Commande Help
Une des fonctionnalités incluses dont bénéficient tous les scripts de maintenance est l'option. Le code d'exemple ci-dessus produira la page d'aide suivante :

$ 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") …



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

Il est possible de mettre une description au début de la sortie du «  » en utilisant la méthode   dans notre constructeur :

Maintenant la sortie nous donne la description :

$ php helloWorld.php --help

Say hello.

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



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

Pour ajouter une option de commande en ligne, 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 […] … 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 :

Cela fournit un message d'erreur utile quand l'extension n'est pas activée. Par exemple pendant le développement local, une extension particulière peut ne pas avoir encore été activée dans le fichier LocalSettings.php, ou si vous avez une ferme de wikis, l'extension peut n'être active que sur un sous-ensemble de wikis.

Notez-bien qu'aucun code ne peut être exécuté ailleurs que via la méthode. Toute tentative pour accéder aux services du noyau MediaWiki, aux classes, aux fonctions, ou encore pour appeler le code de votre propre extension avant ceci, sortira en erreur ou sera non fiable et non pris en charge (comme étant hors de la déclaration de la classe, ou dans le constructeur).



Ecrire des tests
Il est recommandé d'écrire des tests pour vos scripts de maintenance, comme pour toute autre classe. Voir le guide des scripts de maintenance pour l'aide et les exemples.