[疑問]PHP js指令碼路徑,圖片路徑,樣式路徑的有關問題
最後更新:2016-06-13
來源:互聯網
上載者:User
[疑問]PHP js指令碼路徑,圖片路徑,樣式路徑的問題!
按道理這類常見問題自己找答案的,可是越看我越糊塗了。大家看看我的理解是否正確。
我自己寫了一個單一入口的程式。就是說所有模組的Action都是走root/index.php。 後面加model名稱和action名稱和方法名稱和參數名稱。
index.php?model=user&action=Login&method=check
app:init(); // require_once: app.class.php
app裡面擷取model 和 action 然後動態執行Action類的方法如:
UserLoginAction.class.php
public function check(){
//如果成功則跳轉
問題來了:跳轉我這裡用的是require_once admin_index.php ,因為有些變數我想在admin_index.php裡面使用,所以沒用重新導向,我也沒有更好的辦法啊。這個不像JAVA可以將對象傳遞給JSP。 可以用$_SESSION['uservo'],但是我不習慣將一個東西用Session傳遞,所以就乾脆直接include進來。但是問題就來了。
}
admin_index.php 裡面的圖片,CSS檔案,JS檔案 的路徑怎麼處理啊?
我現在沒有辦法了,全部用絕對路徑直接寫死來。
admin_index.php
如果用相對路徑:$currentfolder = dirname(__FILE__); 也不是個辦法啊? 你想想,所有的圖片檔案前面都加上一個
/images/logo.jpg" />
我能理解require 和 include 的方式,相當於把引入檔案的代碼複製到當前index.php檔案裡面。 所以被引入的檔案裡面的路徑實際上是index.php的所在目錄。 如果全部用絕對路徑也不好啊(這是我的最後一招了)
dirname(__FILE__) 方法還有一個問題:這個返回的好像是檔案實體路徑啊。 這不是什麼都給別人知道啦?
最後一招:全部用實體路徑 ./ 表示當前路徑相對於根目錄index.php下:反正程式從開始到結束就相當於在一個檔案裡執行。 全部路徑以 ./開頭寫死。
////////////////////////////////////////////////////
誰有更好的辦法啊? 非常感謝。
------解決方案--------------------
不介意的話可以用 $_SERVER['DOCUMENT_ROOT'] 這個會比你用絕對路徑強.
其實有很多方法。我自己還是用相對.當然有時候也會給路徑搞得神經錯亂,那麼就修改include的方式,少給自己製造病例.
------解決方案--------------------
如果是自已寫的架構,有兩種方式處理:
一種是設全域變數或函數 如define('STYLE_PATH', 'xxxx'); 這個推薦,如果換伺服器了,一改就可以分流。
第二是用base_url() ;取得你index.php檔案的相對於根目錄的路徑。(這個只相對於程式內部, 實際上所有內部url都需要這個來構造)
這樣,無論你入口在哪,程式都不會錯。