ホームページ php教程 php手册 discuz 3.x コア ファイル class_core.php の分析

discuz 3.x コア ファイル class_core.php の分析

Aug 25, 2016 am 10:20 AM

class_core.php は discuz 3.x のコア ファイルです。ほとんどすべての PHP スクリプトはこのファイルを参照してフォーラムのオペレーティング環境を初期化します。次の分析はバージョン 3.2 discuz を参照しています。

12-15行目: 定数定義
IN_DISCUZ: true //内部PHP参照ファイルが直接呼び出されないようにするために使用されます。
DISCUZ_ROOT: E:\project\discuz\ //フォーラムが配置されている物理パス
DISCUZ_CORE_DEBUG: false

17行目

: カスタム例外処理関数を設定します処理メソッドは次の場所にあります: core::handleException 静的メソッド。

行 24-30

: 自動ロード クラス関数を定義します。このメソッドは次の場所にあります: core::autoload($class) リーリー

このメソッドの簡単な説明: ./source/class/ フォルダー内のクラス ファイルを参照します。メソッドのパラメータはクラス名です。クラス名にアンダースコアが付いている場合、プレフィックスはサブフォルダー名、サフィックスはフォルダー名_クラス名になります。 ./source/class/subfolder/subfolder name_class の例: $class = "discuz_base" の場合、参照されるクラス ファイルは次のようになります: ./source/class/discuz/discuz_base.php 参照されるすべてのファイル名は core::imports 配列内に保存されます。

33 行目:

C::createapp() 静的メソッドを実行します。 リーリー

このメソッドは、フォーラムを初期化するメソッドであり、discuz_application クラス オブジェクトを作成し、シングル ファクトリ モードを使用します。 discuz_application クラスは、./source/class/discuz/discuz_application.php
にあります。

C::createapp() メソッドは discuz_application クラスのインスタンスを直接作成しませんが、静的メソッド discuz_application::instance() を実行することで間接的に作成します。

discuz_application::instance() 静的メソッド 新しいインスタンス、コンストラクターはフォーラム環境を初期化します。 (詳細については、discuz_application.php の分析を参照してください)。

さらに、ファイルの最後でクラス名が省略形で再定義されています: 行 208 ~ 209: C はコア クラス名を再定義し、DB は discuz_database クラス名を再定義します。

discuz_application.php 分析:

行 57-62:

コンストラクターは 4 つのメソッドを使用してフォーラムのパラメーターを初期化します: リーリー

(1)$this->_init_env():

環境変数の初期化行 87-93: 定数定義 MAGIC_QUOTES_GPC:true (バージョン 5.4 以降では false) ICONV_ENABLE:true MB_ENABLE:true EXT_OBGZIP:true TIMESTAMP: 現在時刻のカットオフと現在のタイムゾーンをグリニッジタイムゾーンに設定します

行 94:

コア関数ライブラリを引用します: ./cource/function/function_core.php。 参照が成功し、定数が定義されました: DISCUZ_CORE_FUNCTION: true

99-104行目:

ini:memory_limit:128Mを設定 106行目: クローラーの検出: IS_ROBOT: false

行 108-112:

不要なグローバル変数をクリアします。 リーリー

行 114-203:

グローバル変数を定義します: $_G、オブジェクト自体の var 属性もその参照を保存します。

(2)$this->_init_config()

初期化環境:

289 行目:

./conifg/config_global.php 構成パラメーター ファイルを引用します

行 299:

$_config['security']['authkey'] の値を検出して設定します。 リーリー

行 303-315: 構成パラメーターにデバッグ構成パラメーターが存在するかどうかを確認します。存在しない場合は、定数 DISCUZ_DEBUG: false を定義します。それ以外の場合は、true に設定します。

行 316-317: 定数定義: STATICURL:static/、それを var 属性に格納します。

行 319-320: すべての $_config 配列パラメーターを $this->config および $this->var['config'] に保存します。

行 322: $_config['cookie']['cookiepath'] パラメーター値の前に / スラッシュを追加します。

行 325: $this->var['config']['cookie']['cookiepre'] 値を再定義します。

(3)$this->_init_input() 入力を初期化します

行 236-240: マジック クオート機能がオンになっている場合は、$_GET、$_POST、$_COOKIE のバックスラッシュを削除します。

行 243-246: $this->config['cookie']['cookiepre'] の値に従って、このプレフィックスを持つすべての Cookie は $this->var['cookie'] に保存されます。キー プレフィックスなし。

行 251-253: POST 値は GET にマージされ、GET 値は $this->var['gp_'.key name] に格納されます。

行 255-257: $_GET['page']URL エンコード。

行 259-261: ハンドルが無効な $_GET['handlekey']。値には英数字とアンダースコアのみを含めることができます。

行 264-268: $_GET 値を $this->var['gp_'.key name] に保存し、すべての値はアッドスラッシュ (つまり、引用符と引用符) で囲まれています

行 270-273: $_GET['mod'] を初期化し、$this->var['mod'] に格納します。mod パラメーターは、実行されるモジュール名です。 $_GET['inajax'] を初期化します。 、$this->var['inajax'] に格納、この値によりリクエストが ajax リクエストであるかどうかが決まります。initialize $_GET['page']、store $this->var['page']; this->var ['cookie']['sid']、$this->var['sid'] に格納され、通常は null 値。

行 275-278: $this->var['cookie']['saltkey'] が存在しない場合は、この値を生成して Cookie に保存します。この値は 1 か月間有効です。

行 279: $this->var['cookie']['saltkey'] と $this->var['config']['security']['authkey'] に基づいて、$this を生成します- >var['authkey'] 値。

(4)$this->_init_output() 初期化出力:

行 337-342: Web ページで gzip 圧縮が有効かどうかを判断し、$this->config['output']['gzip']; のブール値を設定し、$ のブール値を設定することを決定します。 _G['gzipcompress'] 。

行 344-346: 出力キャッシュを有効にします。

行 348-353: $_G['charset'] の文字エンコーディング値と定数 CHARSET を設定します。値は $this->config['output']['charset'] にあります。 Webページのヘッダーの文字エンコーディングを出力します。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)