Manual:Writing maintenance scripts/ja

これは、MediaWiki 1.16 で導入されて書きやすくなったコマンドラインの MediaWiki 管理スクリプトを  クラス ( 参照)に基づいて書く方法を順番に解説したものです.

スクリプトの例
ここでは、単に「Hello, World」と出力する  というメンテナンス スクリプトを説明します. このプログラムは、期待される著作権ヘッダーと同様に、実行に必要な最小限のコードを含んでいます (代替ヘッダーについては、著作権ヘッダーを参照してください):

このプログラムは「Hello, World!」と出力するだけですが、既にオプション  があります (その他のコマンドラインのオプションも). 出力の例:

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

$

概要:


 * をインクルードしました. これにより、引数の解析、コンソール読み出し、データベース取得のメソッドを備えた  を定義します.   へのフルパスを使うと最善です.


 * Maintenance クラスを拡張し、さらに


 * コマンドラインから実行した場合のみ、Maintenance クラスに  クラスを使用してスクリプトを実行するように指示します.  内部的には、  が別ファイルの  を読み込み MediaWiki クラスと設定を自動的に読み込むと次に


 * 定義した  関数が実行され、スクリプトが動作します.

説明の追加
"But what is this maintenance script for?" I can hear you asking.

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

The output now gives us the description:

$ php helloWorld.php --help

Say hello.

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

オプションと引数の解析
世界に挨拶するのもいいですが、個人にも挨拶できるようにしたいですね.

To add a command-line option, add a constructor to  that calls  's   and update the   method to use the new option. 's parameters are, so:

これにより、実行すると、与えられた引数によって  スクリプトの出力が変化するようになりました:

 $ 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

拡張機能
管理スクリプトが拡張機能のためなら実行をインストールする必要条件を加える：

そのwiki (と同様にwikiファームも)拡張子を有効にしないと、これによりちょっとしたエラーメッセージが供給されます. を使う拡張子だけで有効になります.

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 Maintenance scripts guide for help and examples.