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 './test.php'; この文の実際の内容は require_once F:webrootbbs./test.php