모든 분석 지침은 연한 빨간색의 작은 4자 이탤릭체로 작성됩니다.
Index.php
//mediawiki 프로그램 항목
주요 웹 항목입니다.
이제 프로그램 코드의 첫 번째 줄을 살펴보고 PHP 버전이 5.3.2 이상인지 확인하세요. 그렇지 않다면, 페이지에 오류 메시지가 보고됩니다.
PHP 코드
require __DIR__
'/includes/WebStart. php'* Setup.php(로드된 경우) 그런 다음 AutoLoader인 GlobalFunctions를 설정합니다. ,
* 및 구성 전역($wgTitle은 아님).
WebStart .php의 파일 주석은 위와 같습니다. 이 파일이 수행하는 작업은 웹 요청에 대한 설정을 초기화하는 것입니다(보안 검사 수행, 디버깅 활성화, 전역 변수 및 상수 로드). 구성 파일. 마지막으로 미디어위키가 설치되지 않은 경우 setup.php를 호출하여 미디어위키를 설치합니다. 이 파일은 Defines.php(상수), LocalSettings.php(구성 파일, 전역 변수)를 호출하고 구성에 따라 여기에 문자 버퍼도 엽니다. 콜백 메서드는 OutputHandler.php의 wfOutputHandler 메서드입니다.
PHP 코드
if ( ini_get(
'register_globals') ) {
die (
'MediaWiki는 Register_globals가 활성화된 설치를 지원하지 않습니다. 'PHP 코드
헤더(
'X-Content-Type-Options: nosniff');
IE8의 콘텐츠 스니핑을 끄세요. 모두 무시하세요
PHP 코드
함수는 현재 Unix 타임스탬프와 마이크로초를 반환합니다.
PHP 코드
# 작업 디렉터리의 전체 경로입니다.
# 예를 들어
apc에서 효과적인 제외 경로를 가질 수 있습니다.
# __DIR__은symlinked를 포함하지만 realpath()는 false를 반환합니다
# 상위 디렉토리에 대한 권한이 없는 경우.
=
getenv
( 'MW_INSTALL_PATH'PHP 코드
require_once
"$IP/includes/profiler/Profiler.php"= wfGetRusage() ?:
array
();
$wgProfiler = 배열
() ;
(
file_exists
( "$IP/StartProfiler.php"$mediaWiki
->run()
Mediawiki.php
MediaWiki 클래스는 mediawiki.php에 정의되어 있습니다. 여기에는 위키 객체의 다양한 방법이 포함됩니다. 그런 다음 $mediaWiki 개체를 위한 메모리 공간을 엽니다.
PHP 코드
공개function
run() {AJAX 요청을 활성화할지 여부를 결정하고 요청의 $action 값이 ajax인 다음 Ajax 요청을 Ajax dispather 프로세서로 보냅니다.
사용자가 forceHTTPS를 true로 설정한 경우, 또는 사용자
//가 HTTPS를 요구하는 그룹에 속해 있는 경우, 또는 HTTPS
// 기본 설정을 설정하고 HTTPS로 리디렉션합니다.
// 참고: $wgTitle이 설정된 후에 이 작업을 수행하고, 그렇지 않으면 후크는
// isLoggedIn()에서 실행되며 모든 종류의 이상한 작업을 수행합니다.
PHP 코드
( $this
->config ->get('UseFileCache' ) && $title
->getNamespace() >= 0 ) {네임스페이스 값 의미
-1
|
특수: 🎜>
|
|
|
|
|
5
| |
6
|
|
이미지 토크: |
8 |
미디어위키: |
9 |
MediaWiki_talk: |
10 |
템플릿: |
11 |
템플릿_토크: |
12 |
도움말: |
13 |
Help_talk: |
14 |
카테고리: |
15 |
카테고리 토크: |
16 |
온라인페이 |
// 실제로 요청 작업을 수행하고 출력을 구축합니다.
PHP 코드
PHP 코드
wfProfileIn(
__METHOD__
)PHP 코드
if
( $requestPHP 코드
$unused
= null // 통과 참조하여// 특별한 페이지 등을 포착하려면 여기를 확인해야 합니다.
// Article::view()에서 다시 확인하겠습니다.
PHP 코드
$permErrors
= $title
// 모든 DB 및 지연 업데이트가 발생하거나 발생하지 않아야 합니다.
// 클라이언트 연결 끊김으로 인해 나중에 취소하면 안 됩니다.
PHP 코드
ignore_user_abort( true )
PHP에서 제공하는 기능으로 true로 설정하면 사용자와의 연결 끊김을 무시합니다. PHP는 클라이언트에 정보를 보내려고 시도할 때까지 사용자의 연결이 끊어졌는지 감지하지 못합니다.
// 이제 모든 트랜잭션을 커밋하여
// 출력() 이후에 보고되지 않은 오류가 전체 DB 트랜잭션을 롤백하지 않도록 합니다.
PHP 코드
제출된 사항은 오류가 있을 경우 롤백됩니다.
//모두 출력!
PHP 코드
페이지가 첫 페이지로 출력됩니다. , 여기 문장 앞의 모든 데이터에는 스타일이 포함되지 않습니다. 워드 코드 실행은 반환 데이터 유형에 따라 다른 스킨을 추가합니다.
PHP 코드
위 내용을 포함하여 mediawiki1.24 소스코드 분석(1)을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.