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

WBOY
リリース: 2016-08-25 10:20:46
オリジナル
1365 人が閲覧しました

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ページのヘッダーの文字エンコーディングを出力します。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!