Manual:Variable/ja


 * このページでは変数の作成方法について説明されています. デフォルトの変数については、Help:Variablesをご覧下さい. 

変数は小さなwikitextでテンプレートのようなものですが、パラメータを持たず、決め打ちされた値が割り当てられます. 標準的なwikiのマークアップ、例えば もしくは などは変数の例です. 独自のカスタム変数を定義することでwikiマークアップを拡張することも出来ます.

用語は多少間違っています. 変数について変えられるものが存在しないからです. エンドユーザは変数の値を変更することは出来ません. 値を計算するたくさんのPHPコードによってあらかじめ決定されているからです. "変数(variable)"という用語は値(value)のソースから由来しています: php変数もしくは変数に割り当てることができるもの、例えば、文字列、数字、式、もしくは関数の返り値です.

カスタム変数を定義する
変数はマジックワードの特別な場合で、最初の段階でマジックワードとして変数を定義します:


 * 1) 変数のためにマジックワードidを選択する.  これは変数定義の様々な部分を結びつけるために使用される内部の識別子のみです: wikiテキストで現れる名前と値を変数に割り当てるphpコードです. エクステンションによって独自に関係にあるidを選択することがベストで他のエクステンションによって使用される他のマジックワードidと混同することはありそうにないでしょう. 共通の戦略は のようなものを使用することです. canonicalnameはエクステンションで登録する名前です(下記のをご覧下さい).
 * 2) wikiテキストで現れる名前を定義する.  これを達成するために、フック関数を定義してLanguageGetMagicで登録する必要があります. フック関数は配列に渡されフック関数はキーが内部マジックワードidで値が変数のために使用したいすべての名前を含む配列であるエントリを追加します. 名前は大文字と小文字を区別して独立した言語です. 詳細な情報についてはLanguageGetMagicとmagic words/jaをご覧下さい.
 * 3) 値を変数に割り当てるphpコードを提供する'' これを実現するためには、フック関数を定義してManual:Hooks/ParserGetVariableValueSwitchで登録する必要があります.

このプロセスとマジックワードを定義するための一般的なプロセスの唯一の違いは最後の段階であることに注意して下さい: Manual:Hooks/ParserGetVariableValueSwitchのためにフック関数を定義します. パーサ関数はidとphpコードを結びつけるために異なったメソッドを持ちます. 詳細な情報についてはManual:Parser functions/jaをご覧下さい.

カスタム変数を登録する
これは２つの段階のプロセスです:


 * 1) 変数が に含まれるように変数を定義します これはメンバーをManual:$wgExtensionCreditsに追加することが求められます. もっと詳細な情報については、MediaWikiで機能を登録するをご覧下さい.
 * 2) マジックワードidを変数として宣言する これを実現するためにフックを書いて 、この記事の題目に割り当てします. 　ノート: このフックは変数で使用するため のみ です. パーサ関数を定義するために使用してはなりません.

例
''ノート: コーディングテンプレートとしてこの例をしたい場合、MediaWikiもしくは、他のエクステンションの名前との衝突をする危険性を減らすために を何かあなたのプロジェクトでユニークなものに置き換えて下さい. 例えば、エクステンションが という名前で'My'を'BEST'で置き換えたい場合、定数、変数、関数、もしくは'BEST_'、'wgBEST'、'wfBEST'、もしくは'BEST'をもっていることを確認して下さい. ''

複数の変数を持つエクステンション
もちろん、一つのエクステンションのために一つ以上の変数を定義することが出来ます. それぞれの変数のために上記のコードを繰り返すことは少し退屈です. 下記のメソッドによって一つの場所ですべての変数についてのすべてのデータを持つデータ構造を定義することが出来ます. 次のコードでは登録をセットアップするデータを使用します.

この方法でコードとデータを分類することはいくつかの利点があります:
 * 変更する必要がある場合すべてのものが一カ所にあります
 * すべてのエクステンションの変数の全体像を素早くみることが簡単です

逆に不利な点はコードが少し抽象的で新人のプログラマが理解するには難しいかもしれないことです.

''ノート: 下記のコードはコンセプトの理解だけを目的にしたものです: 構文エラーのためにテストされていません - 自己責任でテンプレートとしてご利用下さい. ''

上記のコードは複数の変数の問題へのちょっとした一つのアプローチです. 定義と登録のグループ化をするために代替的なアプローチについてはExtension:Variablesをご覧下さい.

さらなる情報

 * Help:Variables - MediaWikiパッケージコアに組み込まれているデフォルトの変数を検討します
 * Manual:Magic words - 異なる種類のマジックワードとMediaWikiがどのように変数、パーサ関数、テンプレートを区別して伝えるのかを再検討しています.