Manual:Writing maintenance scripts/de

Dies ist eine Schritt-für-Schritt-Anleitung zum Schreiben eines Wartungsskripts basierend auf der -Klasse (siehe ), die in MediaWiki 1.16 eingeführt wurde, um das Schreiben von MediaWiki-Wartungsskripten für die Befehlszeile zu vereinfachen.



Beispielskript
Wir gehen ein -Wartungsskript durch, das einfach "Hello, World" ausgibt. Dieses Programm enthält die Mindestmenge an Code, die zum Ausführen benötigt wird, sowie den erwarteten Copyright-Header (für alternative Header siehe Copyright-Header):

Das Programm gibt nur "Hello, World!" aus, hat jedoch bereits  (und andere Befehlszeilenoptionen). Beispielausgabe:

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

$

Eine Übersicht:


 * Wir schließen  ein. Dies definiert , das eine Methode zum Analysieren von Argumenten, zum Lesen der Konsole, zum Abrufen der Datenbank usw. hat. Es ist am besten, den vollständigen Pfad zu   zu verwenden.


 * Wir erweitern die Maintenance-Klasse und dann mit


 * Sag der Klasse Maintenance, dass sie das Skript mit unserer Klasse  nur dann ausführen soll, wenn es von der Kommandozeile aus ausgeführt wird. Intern lädt   eine weitere Datei, die MediaWiki-Klassen und -Konfigurationen automatisch lädt, und dann


 * Die -Funktion, die wir definiert haben, wird ausgeführt, und unser Skript erledigt seine Arbeit.



Eine Beschreibung hinzufügen
"Aber, für was ist dieses Wartungsskript?" Ich kann dich fragen hören.

Wir können eine Beschreibung oben in die Ausgabe von " " einfügen, indem wir die Methode  in unserem Konstruktor verwenden:

Die Ausgabe gibt uns nun die Beschreibung:

$ php helloWorld.php --help

Say hello.

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



Parsing von Optionen und Argumenten
Die Welt zu grüßen ist schön und gut, aber wir wollen auch Einzelpersonen begrüßen können.

Um eine Kommandozeilenoption hinzuzufügen, fügst du einen Konstruktor zu  hinzu, der  's   aufruft und aktualisierst die Methode , um die neue Option zu verwenden. Die Parameter von  sind , also:

Diesmal ändert sich die Ausgabe des -Skripts bei der Ausführung je nach dem bereitgestellten Argument:

 $ 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

Erweiterungen
Wenn dein Wartungsskript für eine Erweiterung gedacht ist, solltest du eine Anforderung hinzufügen, dass die Erweiterung installiert ist:

Meistens liefert dies eine nette Fehlermeldung, wenn die Erweiterung auf diesem Wiki nicht aktiviert ist (wahrscheinlich auf Wiki-Farmen). Dies funktioniert nur für Erweiterungen, die verwenden.

Beachte, dass die von deiner Erweiterung definierten Klassen erst verfügbar sind, wenn du die Funktion  drückst. Versuche, vorher Instanzen zu erstellen, z. im Konstruktor, verursacht Klasse nicht gefunden Ausnahmen.



Schreibtests
Es wird empfohlen, wie bei jeder anderen Klasse, Tests für deine Wartungsskripte zu schreiben. Hilfe und Beispiele findest du im Handbuch Wartungsskripte.