ホームページ >バックエンド開発 >PHPチュートリアル >mediawiki1.24 ソースコード解析 (1)
すべての分析手順は、薄赤色の小さいサイズの 4 の斜体で書かれています。
Index.php
//mediawiki プログラム エントリ
これは MediaWiki のメイン Web エントリ ポイントです。
次に、プログラムのコードの最初の行を見てみましょう。 PHP のバージョンが 5.3.2 以降であるかどうかを確認します。そうでない場合は、ページにエラー メッセージが報告されます。
Php コード
Php コード
* MW_NO_SETUP が定義されているかどうかに応じて Setup.php をロードします。
* Setup.php (ロードされている場合) 次に、GlobalFunctions をセットアップします。 、AutoLoader、
*、および構成グローバル(ただし$wgTitleではありません)。
WebStart.php ファイルのアノテーション部分は上記のとおりです。大まかに言うと、次の操作が実行されます。このファイルは、Web リクエストの設定を初期化するためのものです。つまり、セキュリティ チェックを実行し、デバッグを有効にし、構成ファイルにグローバル変数と定数をロードします。最後に、mediawiki がインストールされていない場合は、setup.php を呼び出して mediawiki をインストールします。このファイルは、Defines.php (定数)、LocalSettings.php (設定ファイル、グローバル変数) を呼び出し、設定に従ってここで文字バッファーも開きます。コールバック メソッドは、OutputHandler.php の wfOutputHandler メソッドです。
Phpコード
if
( ini_get(
'register_globals') ) {
die
(
'MediaWiki はサポートしていませんregister_globals が有効になっているインストール。'無効にする方法については、''MEDIAWIKI'
, true );
# itludepを作成しますたとえば持つことが可能有効な exc pathin apc
# __DIR__ は
#ディレクトリ
);
if (
$IP)=== false ) { $IP = realpath(' .' ) ?: dirname( __DIR__ );
} PHPの環境変数を取得して、インストール先のディレクトリを取得します。
PHPコード
$wgProfiler
=array();
if
(file_exists) ) {
require_once
「$IP/includes/セットアップ。 php";
MediaWiki クラスは mediawiki.php で定義されています。これには、Wiki オブジェクトのメソッドが多数含まれています。次に、$mediaWiki オブジェクト用のメモリ領域を開きます。
Phpコード
Php code
AJAX リクエストが有効かどうか、リクエストの $action 値が ajax であるかどうかを確認し、Ajax リクエストを Ajax ディスパッサ プロセッサに送信します。
ユーザーのforceHTTPSがtrueに設定されている場合、またはユーザー
//がHTTPSを必要とするグループに属している場合、またはHTTPS
//設定が設定されている場合は、HTTPSにリダイレクトします。
// 注: $wgTitle がセットアップされた後にこれを実行してください。そうでない場合、フックは次から実行されます
// isLoggedIn() はあらゆる種類の奇妙なことを実行します。
Php コード
forcehttpsがtrueに設定され、httpsアクセスが使用される場合、リダイレクト処理
PHP コード
名前空間の値
名前空間の値の意味
- 1 |
スペシャル: |
1 |
トーク: |
2
|
ユーザー: ser_talk:
|
|
|
MediaWiki_talk:
|
|
10
|
テンプレート:
|
11
|
Template_talk: ヘルプ: Help_talk: |
14 |
カテゴリー: |
15 |
Category_talk: |
16 |
ONLINEPAY |
// 実際にリクエストの処理を実行し、出力を構築します
Php コード
処理中ジョブをリクエストして出力をビルドします。このメソッドは出力オブジェクト $output を生成します。このオブジェクトには、さまざまな出力結果を設定するための対応するメソッドがあります。
Php コード
メソッドの最初の文は、mediawiki の基本的なメソッドのエントリに次の文があることがわかりました、そして wfProfileOut( __私が現れるその後 THOD__ ) 追跡 DEBUG モードを開始した後、対応するデータを出力することがわかります。印刷方法を有効にし、LocationSettings.php で $wgDebugLogFile=d:a.txt 値を設定します。注: wfProfileIn と wfProfileOut はペアで指定する必要があります。ペアで指定しないと、エラーが発生します。また、デバッグ情報の出力順序は、最初に wfProfileIn と wfProfileOut の一致したペアのデバッグ情報を出力します。つまり、wfProfileOut が見つかった場合にのみデバッグ情報が出力され、wfProfileIn は出力されません。 。
PHP コード
リクエストに印刷リクエストがあるかどうかを判断します。その場合は、出力オブジェクト内でマークしてください。
Phpコード
は、リクエスト オブジェクトを通じて初期化前チェックを実行します。これはシステム フック プログラムであり、BeforeInitialize メソッドを実装するプラグインが必要です。全文検索では、このメソッドの具体的な実践例は見つかりませんでした。
// このページを読むためのユーザーの権限を確認してください。
// 特別なページなどをキャッチするには、ここを確認する必要があります。
// Article::view() で再度確認します。
Phpコード
// すべての DB 更新と遅延更新が行われるか、何も行われないかのどちらかです。
// 後者はクライアントの切断によりキャンセルされるべきではありません。
PHPが提供する関数をtrueに設定すると、ユーザーからの切断を無視します。 PHP は、クライアントに情報を送信しようとするまで、ユーザーが切断したかどうかを検出しません。
//ここでトランザクションをコミットします
//output() の後に報告されていないエラーが DB トランザクション全体をロールバックしないようにします
Php コード
エラーがある場合は送信され、ロールバックされます。
//すべてを出力します!
Phpコード
ページ出力フロントページに移動します。この文より前のすべてのデータにはスタイルがありません。 Word コードを実行すると、返されるデータ型に応じて異なるスキンが追加されます。
Phpコード