Manual:Writing maintenance scripts/ja

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

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

The below example program will print "Hello, World!":

$ php helloWorld.php Hello, World!

Boilerplate explained

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


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


 * コマンドラインから実行した場合のみ、Maintenance クラスに  クラスを使用してスクリプトを実行するように指示します.

内部的には、 が別ファイルの  を読み込み MediaWiki クラスと設定を自動的に読み込むと次に


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

When our program is run from the command-line, the core maintenance framework will take care of initialising MediaWiki core and configuration etc, and then it will invoke this method.

Help command
One of the built-in features that all maintenance scripts enjoy is a  option. The above example boilerplate would produce the following help page:

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



説明の追加
「しかし、このメンテナンス スクリプトは何のためにあるのだろう?」 という声が聞こえてきそうです.

コンストラクターの  メソッドを使用することで、「 」の出力の先頭に説明を配置できます:

これで説明が出力されるようになりました:

$ php helloWorld.php --help

Say hello.

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



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

コマンドライン オプションを追加するには、 に   の   を呼び出すコンストラクターを追加し、  のメソッドを新しいオプションを使用するように更新します. のパラメーターは  であるため、以下のようにします:

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

 $ 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

拡張機能
メンテナンス スクリプトが拡張機能向けである場合、拡張機能がインストールされていることを要件に追加する必要があります:

たいていの場合、これは拡張機能がそのウィキで (おそらくウィキファームで) 有効になっていない場合に、親切なエラー メッセージを提供します.

Be aware that no code may be executed other than through the  method. Attempts to call MediaWiki core services, classes, or functions, or calling your own extension code prior to this, will cause errors or is unreliable and unsupported (e.g. ouside the class declaration, or in the constructor).



テストを書く
他のクラスと同じように、メンテナンス スクリプトのテストを書くことをお勧めします. ヘルプと例は、メンテナンス スクリプトのガイドを参照してください.