[疑问]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__); 也不是个办法啊? 你想想,所有的图片文件前面都加上一个
我能理解require 和 include 的方式,相当于把引入文件的代码复制到当前index.php文件里面。 所以被引入的文件里面的路径实际上是index.php的所在目录。 如果全部用绝对路径也不好啊(这是我的最后一招了)
dirname(__FILE__) 方法还有一个问题:这个返回的好像是文件物理路径啊。 这不是什么都给别人知道啦?
最后一招:全部用物理路径 ./ 表示当前路径相对于根目录index.php下:反正程序从开始到结束就相当于在一个文件里执行。 全部路径以 ./开头写死。
////////////////////////////////////////////////////
谁有更好的办法啊? 非常感谢。
------解决方案--------------------
不介意的话可以用 $_SERVER['DOCUMENT_ROOT'] 这个会比你用绝对路径强.
其实有很多方法。我自己还是用相对.当然有时候也会给路径搞得神经错乱,那么就修改include的方式,少给自己制造病例.
------解决方案--------------------
如果是自已写的框架,有两种方式处理:
一种是设全局变量或函数 如define('STYLE_PATH', 'xxxx'); 这个推荐,如果换服务器了,一改就可以分流。
第二是用base_url() ;取得你index.php文件的相对于根目录的路径。(这个只相对于程序内部, 实际上所有内部url都需要这个来构造)
这样,无论你入口在哪,程序都不会错。