1. 程式人生 > >關於define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -7));的理解

關於define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -7));的理解

目錄名 bst 名稱 函數 pan 不同 所在 組成 lin

關於define(‘DISCUZ_ROOT‘, substr(dirname(__FILE__), 0, -7));的理解

define(‘DISCUZ_ROOT‘, substr(dirname(__FILE__), 0, -7));
得到網站根目錄
對於上面這語句一直不理解是什麽意思,查了相關資料有點了結

首先:這個語句由 define(), substr(), dirname()三個函數組成

1. define()
定義和用法 define() 函數定義一個常量。常量類似變量,不同之處在於:
  • 在設定以後,常量的值無法更改
  • 常量名不需要開頭的美元符號 ($)
  • 作用域不影響對常量的訪問
  • 常量值只能是字符串或數字
語法define(name,value,case_insensitive) 參數 描述 name 必需。規定常量的名稱。 value 必需。規定常量的值。 case_insensitive

必需。規定常量的名稱是否對大小寫敏感。

若設置為 true,則對大小寫不敏感。默認是 false

(大小寫敏感)。


註:第三個參數也是今天看了函數原型學到的,define也可以設置大小寫的敏感。

2.dirname(path )
定義和用法 path 參數是一個包含有指向一個文件的全路徑的字符串。該函數返回去掉文件名後的目錄名。
語法string dirname ( string path )
參數
描述
path
必需。規定要檢查的路徑。
例子<?php
echo dirname("c:/testweb/home.php");
echo dirname("/testweb/home.php");
?>

輸出:

c:/testweb
/testweb
3.substr( ) 函數
定義和用法substr() 函數返回字符串的一部分
語法string substr ( string $string , int $start [, int $length ] )

參數
描述 string 必需。規定要返回其中一部分的字符串。 start

必需。規定在字符串的何處開始。

  • 正數 - 在字符串的指定位置開始
  • 負數 - 在從字符串結尾的指定位置開始
  • 0 - 在字符串中的第一個字符處開始
charlist

可選。規定要返回的字符串長度。默認是直到字符串的結尾。

  • 正數 - 從 start 參數所在的位置返回
  • 負數 - 從字符串末端返回
註釋:如果 start 是負數且 length 小於等於 start,則length為 0

4.__FILE__

__FILE__的路徑是當前代碼所在文件(而不是url所在 文件)完整路徑,所以定義配置文件通常要放在根目錄下定義網站的根地址

define(‘DISCUZ_ROOT‘, substr(dirname(__FILE__), 0, -7));

假設 __FILE__為 /home/web/include/common.php
因此
dirname(__FILE__)的返回值就是/home/web/include

substr(dirname(__FILE__), 0, -7))的返回值就是/home/web/

define(‘DISCUZ_ROOT‘, substr(dirname(__FILE__), 0, -7));
就是定義常理DISCUZ_ROOT的值為/home/web/

為什麽是-7呢???
對,因為他們都恰好在include文件夾內,數數字母個數,恰好是7個...
這樣定義的常量正好就是根目錄的絕對地址了....

關於define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -7));的理解