文章出處

首先 
我們來看這個全局變量:__FILE__
它表示文件的完整路徑(當然包括文件名在內)
也就是說它根據你文件所在的目錄不同,有著不同的值;當然,當它用在包行文件中的時候,它的值是包含的路徑;

然后:
我們看這個函數:
string dirname ( string path ) 

它是PHP內置函數,它的作用是什么呢,就是返回除了本文件名以外的所在目錄,給你舉個例子
假如你的首頁中用到了_FILE_這個變量:
(假設你的網頁所在目錄為:),那么:
_FILE_的值為(一個絕對路徑)。而此時 dirname (_FILE_) 表示的就是也就是沒有 index.php 這個文件名。
而dirname(dirname(_FILE_))表示的就是上一級的目錄,以此類推;

最后
看一下define()這個函數,其實他就是一個定義常量的函數,比如:define('MEN','ooooo');
那么你后你就可以用MEN來表示ooooo這個字符串;
如果你學過C語言,你就很清楚,其中也有一個類似的#define MEN "ooooo";(其實應該說哦php和C類似,因為php就是c編寫的);
那么這么寫有什么好處呢,那就是當你需要修改變量的時候,你只要修改它就行了,相當的方便,尤其是像路徑這樣的字符串!

酒后給你解釋一下你這段代碼:
define('__TYPECHO_ROOT_DIR__', dirname(__FILE__));
就是定義__TYPECHO_ROOT_DIR__為這個文件所在的目錄,像這種定義一般是放在config.inc.php中的,那么獲取的目錄也就是config.inc.php所在的目錄;也就是根目錄!

define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins'); 這就不要我說了吧!

至于set_include_path(get_include_path() . PATH_SEPARATOR . $path);是什么意思,我想沒有你想得那么復雜:他就是包含路徑;

比如你有一個文件夾:命名為include,里面有
數據庫連接文件:conn.php……,
你這樣設置:set_include_path("/include")
那么以后你就直接可以在其他頁面中使用
include("conn.php")
這不是經常見到嗎?它參數就字符串,當然你也可以設置多個路徑,中間用;分開,

而你那句:
set_include_path(get_include_path() . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . '/var' . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . __TYPECHO_PLUGIN_DIR__);
什意思呢,舉個例子:
你的一個頁面有這樣的語句:
include('/inc/sql.php');
include('/inc/conn.php');
;
;
而你突然發現我把這些要包含的文件放在inc目錄下不安全,怎么辦,要改,我想放到include目錄中,好的,這么多頁面不累死才怪:有沒有好的方法!有!!!!!!!

我在config.inc.php中寫著么一句:
set_include_path(get_include_path() .'/include')就這么簡單,對,就這么簡單!動態的修改!

你不要看這個:get_include_path() . PATH_SEPARATOR . $path這是什么,他就一路徑字符串,中間的.是字符串連接符號,也就是你剛才定義的那些常量的組合,組合成一字符串,我想你一定時認為是沒見過的參數!
一個很簡單的函數,沒什么多的解釋!
也好就是說他可以動態的設置包含路徑!如果正確返回包含路徑,不正確返回false;


來自百度知道: http://zhidao.baidu.com/link?url=ILbyN5Sku7j5Ddx6empHZpQ5ediu4JoMKcyvfA7GwvHEzDiOt3lt-FTxTGgu-qZJK05dSXSkRcBqRbdSJulW3a

文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()