define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -7));
これは、フォーラムのインストール ルート ディレクトリを定義する discuz の定数です。次に、この非常に単純ですが非常に実用的な定数を分析してみましょう。
まず最初に説明しますが、この記事では common.inc.php ファイルの絶対パスが F:webrootbbsincludecommon.inc.php であることを前提としています
この文は discuz の include に含まれています/common.inc.php で、まず定数 DISCUZ_ROOT の値を見てみましょう: F:webrootbbs
次に、この文を詳細に分析します:
define() は、もちろん、ここで定数を定義します。 DISCUZ_ROOT の名前を定義します。
substr()、これは文字列インターセプト関数です。substr(‘123456789’, 0, -2) は 1234567 を返します。
dirname(__FILE__)、__FILE__ はマジック定数です。マニュアルには「ファイルのフルパスとファイル名。インクルードファイルで使用すると、インクルードファイル名が返されます。PHP 4.0 以降。 2、__FILE__ には常に絶対パスが含まれますが、以前のバージョンには相対パスが含まれる場合がありました。 dirname() は、パスのディレクトリ部分を返します。 dirname(__FILE__) は取得した文字列を含む F:webrootbbsinclude のようです。
define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -7)); は、文字列
F:webrootbbsinclude から最後の 7 文字を引いたものであることがわかります。 F:webrootbbsインクルードフォルダーを lib に変更した場合、-7 を -3 に変更する必要があります。
今後プログラム内でファイルを参照するときは、
require_once DISCUZ_ROOT ./test.php'; のように記述できます。この文の実際の内容は require_once です。 F:webrootbbs./test.php