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

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

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

拡張機能で定義されたクラスは、 関数を叩くまで利用できないため注意が必要です. これより前に (例えばコンストラクターの中で)、インスタンスを作成しようとすると、クラスが見つからないという例外が発生します.



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