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

$

概要:


 * を加えました. これにより議論の解析方式とコンソール読み出し、データベース入手の方法をそなえた を定義します. のフルパスを使うと最善です.


 * 管理クラスを延長するため


 * コマンドラインから実行した場合に限定して私たちの クラスを使って管理クラスにスクリプトを走らせるように指示します.

内部的には、 が別ファイルの をロードし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 Manual:PHP unit testing/Writing unit tests guide for help and examples.