一般的話
../ 代表上一級目錄 ./代表同級目錄 直接寫img/aa.jpg代表同級目錄
php中好像不能像asp那樣用「/」表示根目錄,代之以$_server['document_root'],其它則相同:../表示向上一層。./表示當前層。假如現在a/b/c/s.php要呼叫根目錄下的 /bb/s2.txt,則:
$rootdir = $_server['document_root'];
$firedir = "$rootdir/bb/s2.txt";
或者:「../../../bb/s2.txt」表示向上返回到b再向上到a再向上到根目錄然後到bb下。
前一陣子老是受php開發中,檔案互相引入require()相對位置關係的困擾,為了徹底弄清它們的關係,筆者做了個實驗。
以下是實驗圖:
當前專案(project2)的絕對路徑是:d:\www\php_case\coucom_make。也就是我們當前專案的根目錄root.
為了能更加清楚的表述不同級別的目錄檔案相互的引入問題,偶大膽將引用分成三種型別即:上級對下級的引用(簡稱上級引用,英文譯為:superior to underling。簡稱(stou)).
下級對上級的引用(簡稱下級引用,英文反之便是)
平級引用或叫同級引用(英文:paratactic)。
好了,我們明確了引用型別,下面我們來看不同型別引用它們有著什麼樣的規則。
我們先來說說上級引用:
看我們的實驗圖,在圖中專案下分別有aa bb ee 三個同級目錄和乙個index.php檔案,在bb下又有cc目錄,cc下又有dd目錄和cc.php ccc.php兩個檔案,同樣dd下也包含乙個dd.php檔案。凡是上層對下層均屬上級引用.
例如:index.php對於所有檔案的引用:
cc .php對dd.php的引用:
ee.php對dd.php的引用:
大家仔細看一下目錄結構,便會發現這三種引用雖然同屬於上級引用,但它們又不完全相同,我把它分成兩種情況:即在上級引用中存在兩種引用情況:1.從屬的上級引用(類如cc.php對dd.php,,因為這兩個檔案同屬於cc目錄)2.非從屬的上級引用(類如index.php對於所有檔案的引用和ee.php對dd.php的引用都屬於這種情況因為它們與被引用的檔案並沒有乙個共同的父目錄,在能相對於站點根目錄).
對於從屬上級引用:
以下是在cc.php對dd.php的引用
require('dd/dd.php');
對於非從屬上級引用:
以下是在ee.php中對cc.php的引用
require('../bb/cc/cc.php');
以上所說的是上級引用,下面我們來了解一下下級引用!同理下層對上層的引用都屬於下級引用,同樣分成從屬與非從屬兩類,從屬下級引用相對路徑以它們的父目錄為根目錄,例如:
ttt.php對bbff.php的引用就屬於這種情況:require('../bb/cc/cc.php');
ccc.php對ee.php的引用: require('../../ee/ee.php');
以上是下級引用的介紹,最後我們來看一下平級引用或者叫同級引用,其實同級引用也是分為這兩種情況:從屬同級引與非從屬同級引用
從屬同級引用很簡單:即在同乙個目錄下的兩個檔案的引用
例如:在dd.php中引用ttt.php require('ttt.php');
非從屬同級引用:即不在同乙個目錄下(沒有共同的父目錄,只有以**目站為父目錄的情況),但是級別是相同的兩個檔案的引用,例如: 在aa.php在引用ee.php require('../ee/ee.php');
以上是三種型別不同情況下的引用,另外還有涉及到巢狀引用的問題
比如:ff.php引用dd.php,而dd.php又引用的gf.php,這種情況,本來dd.php 引用gf.php屬於下級引用中的非從屬引用,寫法是這樣的:require('../../../ee/gf.php');而ff.php引用dd.php屬於上級引用中的從屬引用,寫法是這樣的:require('./cc/dd/dd.php'); 可是你會發現在ff.php中無法找到gf.php檔案,那該如何寫呢?我告訴你應該在dd.php中這樣寫:require('../ee/gf.php');只有這樣寫就正確了,為什麼呢?因為在涉及到巢狀引用的時候被引用檔案的相對路徑要以最終的引用檔案為準!
簡而言之:
其實很簡單的,你用你的web根目錄做根目錄.不管你怎麼定,你檔案肯定有乙個全部都要包含的檔案的,比如有的較global.php,有的較common.php
假如這個檔案放再根目錄
wwwroot/global.php
裡面第一行你加個chdir(dirname(__file__)); //切換到global.php所在目錄就是跟目錄
其他檔案使用
require "../../../global.php";
require "aa/aa.php";
require "bb/bb/cc.php";
這樣就行了,因為你的global.php已經把路徑切換到wwwroot了,你不用像很多人那麼麻煩
define('root_path',dirname(__file__));
require root_path.....
chdir(dirname(__file__)); 的確很好使,相對位置引入這個檔案其他引入檔案只要以他為基準就好了。
www.palmdy.com
陣列的值引用 位址引用
昨天在修改陣列中某個物件裡面的值的時候,發現修改值時,陣列對應的值也會改變,於是就做了一下幾個測試,發現除了string的陣列不會改之外,其他都會發生改變。我列印了一下陣列某個index的hashcode值以及接收該index的物件的hashcode值,只有string不一樣,結果如下 示例1 js...
引用位址小練習
var student function var bosn new student student.prototype.x 101 student.prototype console.log bosn.x 今天在網上看到了上面這個例子,認為console.log bosn.x 值為undefined...
指標引用位址的筆記
位址 在c 中,位址標號使用十六進製制表示。取乙個變數的位址使用 符號,只有變數 才存在記憶體位址,常量沒有位址 不包括const定義的偽常量 例如,對於數 字100,我們無法取出它的位址。取出的位址是一 個常量值,無法再對其取位址了。2.指標 指標的定義使用 type type 為資料型別,任何資...