热搜:NVER 

[疑问]PHP js脚本路径,图片路径,样式路径的有关问题

2024-05-15 16:09:01
 [疑问]PHP js脚本路径,图片路径,样式路径的有关问题

[疑问]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都需要这个来构造)

这样,无论你入口在哪,程序都不会错。