Manual:Global object variables/ja

From MediaWiki.org

Jump to: navigation, search

グローバルは害を為します。オリジナルのMediaWikiコードはコンテキストを処理するためにグローバルに頼りすぎています。MediaWikiの開発ではそれ故グローバル変数からのコンテキストをオブジェクトにゆっくりと置き換えています。オブジェクトに処理をするコンテキストを保存することでメンバー変数によってこれらの変数が遙かに柔軟な方法で再利用されることを可能になります。次のコードのエレガンスの違いを考えて下さい:

    # あたかもウェブリクエストとして閲覧されたかのように記事のHTMLを生成する
    $article = new Article( Title::newFromText( $t ) );
    $article->view();

    # 現在のグローバルを保存する
    $oldTitle = $wgTitle;
    $oldArticle = $wgArticle;
 
    # HTMLを生成する
    $wgTitle = Title::newFromText( $t );
    $wgArticle = new Article;
    $wgArticle->view();
 
    # グローバルをリストアする
    $wgTitle = $oldTitle
    $wgArticle = $oldArticle

現在のMediaWikiのdevelpersの中にはいつの日か、グローバルがMediaWikiから完全に削除され、コンストラクタに渡されるアプリケーションのオブジェクトによって置き換えられることを夢見ている人がいます。効率的であるか、重宝する解決方法が見えているかどうかは別にして、PHP5によって以前のバージョンよりもオブジェクト指向のプログラミングモデルをより簡単にします。

当分の間は、MediaWikiのプログラマはグローバルコンテキストのある環境に取り組まなければなりません。執筆時点で、418のグローバルがMediaWikiによってスタートアップ時に初期化されます。304のこれらはコンフィギュレーション設定で、DefaultSettings.phpとLocalSettings.phpに設定されます (それらのドキュメンテーションもご覧下さい) 。残りの114のグローバルに関する包括的なドキュメンテーションは存在しませんが、もっとも重要なものの中には下記でリスト表示されています。それらはよくindex.phpもしくはSetup.phpのどちらかで初期化されます。

$wgOut - HTTPリスポンスのためのOutputPageオブジェクト。

$wgUser - 現在のリクエストに関連するユーザーに対するUserオブジェクト。

$wgTitle - リクエストURLから作成されたTitleオブジェクト。

$wgLang - ユーザープリファレンスによって選択されたLanguageオブジェクト

$wgContLang - 閲覧されるwikiに関連したLanguageオブジェクト

$wgArticle - $wgTitleに対応するArticleオブジェクト

$wgParser - Parserオブジェクト。パーサエクステンションは それらのフックをここで登録します。

$wgLoadBalancer - LoadBalancerオブジェクト、データベース接続を管理します。

Personal tools