首頁  >  文章  >  後端開發  >  set_include_path用法

set_include_path用法

WBOY
WBOY原創
2016-07-29 09:10:281125瀏覽

轉自:http://blog.sina.com.cn/s/blog_4ce89f200100twbl.html

   http://blog.sina.com.cn/s/blog_81561101031010303030

今天在公司研習原始碼時,看到了set_include_path(dirname(__FILE__));這樣一行程式碼,甚為不解。於是我就百度了一下,順便看了一下php.net的手冊,可是還是不太明白它到底有什麼作用。
   偶然見看到一段另外一段程式碼,然後突發靈感,測試了一下,果然不出所料!
現在我總結一下吧:
   首先set_include_path這個函數呢,是在腳本裡動態地對PHP.ini中include_path進行修改的。
而這個include_path呢,它可以針對下面的include和require的路徑範圍進行限定,或者說是預定義一下。
好像:
       如果我們沒有設定這個值,可能我們需要寫一些完整的路徑: clude("123/test1.php");
          include("123/test2.php");
           require("123/test4.php");
          
require( "123/test5.php");
       ?>
來引入很多外部文件,但是如果我們設定了set_include_path("123/"),我們就可以用下面程式​​碼代替。


          set_include_path             include("test2.php");
          include(" test3.php");
          require("test4.php");
         ?>

因為呢,而執行include或require操作時,就會去include_path指定的路徑去查找要引入的文件,雖然我現在不知道這樣會不會在性能上有所優化,但是可以肯定的是,可以節省一部分程式碼。呵呵~
     那麼剛開始的時候,我以為它加不加都是一樣的沒什麼不同,是因為我只包含了一個本文件夾下的文件。
    後來,終於發現其中的玄機了!可恨的是,網路上居然沒有一篇像我這樣的文章....都是同一篇文章轉來轉去的。     那麼這個函數它不只可以定義一個資料夾,我們可以定義很多資料夾。如下圖所示,我要寫一個初始化函數:
     function initialize()
{    set_include_s(get_include_s(get));   set_include_path(get_include_path().PATH_SEPARATOR . "app/");
    set_include_path(get_include_path().PATH_SEPARATOR . "admin/");
      set_include_path(get_include_path().PATH_SEPARATOR . "include/");
    set_include_path(get_include_path().PATH_SEPARATOR."data/");

}
    這樣它的路徑就成了:
    .;C:php5pear;core/;app/;admin/;lib/;include/;data/;cache/
:   php5pear;這到底是怎麼回事呢,其實我們如果什麼也不寫直接先輸出一下include_path的預設值,就會發現它就是.;C:php5pear;它可以允許隨便去一個引入檔。
    如果再載入了許多資料夾的話,我們直接寫檔案名稱就可以了!
   但是正如我最開始那個問題一樣,為什麼我們公司的代碼和人家的就不一樣呢,原來,如果我就寫一個
       資料夾的文件,就會報錯,說在我指定的這個資料夾內找不到。
      首先,我們先用另一個方法輸出一下:
             $include_value = ini_get('include_path');
echo $include_value;
       ?>

結果是:D:AppServwww
       include("test4.php");       但是如果我去找
      include("test1.php");
):oin 
function.include]: Failed opening 'test1 .php' for inclusion (include_path='D:AppServwww') in
D:AppServwwwtest.phpon line6
     而且我們也發現.;C:php5pear;已經被替換掉了。所以我們在使用的時候,如果不是只在一個資料夾下引入文件,我們就需要在前面加上get_include_path().PATH_SEPARATOR _path的默認值
            PATH_SEPARATOR 是常數,是include的路徑分界符合,在window上是;在unix和Linux 原始的:ini_set(
'include_path'

'目錄名           如果在指定的
目錄下找不到所要求包含的文件,而在當前頁面目錄下正好存在這個名稱的文件時,則默認引入當前目錄下的該文件。

以上就介紹了set_include_path用法,包含了require方面的內容,希望對PHP教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:學習中的蛻變下一篇:學習中的蛻變