返回列表 回复 发帖
深喉咙ASP3.3版本正式发布

关于get_skin_root()的路径问题解惑

在我学电脑的时候,学过相对路径和绝对路径;而当我看该段代码的时候产生一个疑问

get_skin_root()返回的既不是我所学过的相对路径也不是绝对路径;但是图片却能正常显示,百思不得其解。

该返回的是从站点根目录开始的路径 "/站点根目录/skins/模板目录/";

比如我在模板的index.php中包含有一个logo图片;这个图片的地址为"/站点根目录/skins/模板目录/images/logo.gif"

根据相对目录的原则,这个图片的地址应该是 "images/logo.gif".而实际上,如果你直接写了这个路径,那么图片无法正常显示;
原因是:你访问的是根目录下的index.php,模板下的index.php并不直接被调用,而是被根目录下的index.php加载然后显示; 这样,图片的地址应该是相对于根目录下的index.php;
我使用google chrome浏览器的开发者工具将图片地址实时更改为 相对于根目录下index.php的相对路径,即将"/站点根目录/skins/模板目录/images/logo.gif"   修改为 "skins/模板目录/images/logo.gif"。  结果表明该图片正常显示。

那结论就是  "/站点根目录/skins/模板目录/images/logo.gif"这个路径 与 "skins/模板目录/images/logo.gif" 的图片都能正常显示;

但是第一个根本不是相对也不是绝对路径,为何能正常显示呢?

经过不懈研究(其实是在google上搜索),皇天不负有心人,终于找到了答案; 在此要非常感谢钟爱的adobe

adobe Dreamweaver 的文档里有个关于“站点根目录相对路径的说明”

说明如下:

站点根目录相对路径提供从站点的根文件夹到文档的路径。如果在处理使用多个服务器的大型 Web 站点,或者在使用承载有多个不同站点的服务器,则可能需要使用这些类型的路径。不过,如果您不熟悉此类型的路径,最好坚持使用文档相对路径。
站点根目录相对路径以一个正斜杠开始,该正斜杠表示站点根文件夹。例如,/support/tips.html 是文件 (tips.html) 的站点根目录相对路径,该文件位于站点根文件夹的 support 子文件夹中。
在某些 Web 站点中,需要经常在不同文件夹之间移动 HTML 文件,在这种情况下,站点根目录相对路径通常是指定链接的最佳方法。移动含有根目录相对链接的文档时,不需要更改这些链接;例如,如果某 HTML 文件对相关文件(如图像)使用根目录相对链接,则移动 HTML 文件后,其相关文件链接依然有效。
但是,如果移动或重命名根目录相对链接所链接的文档,即使文档彼此之间的相对路径没有改变,仍必须更新这些链接。例如,如果移动某个文件夹,则指向该文件夹中文件的所有根目录相对链接都必须更新。(如果使用"文件"面板移动或重命名文件,则 Dreamweaver 将自动更新所有相关链接。)

最后,我严重鄙视我们学校那些垃圾老师,学校那些垃圾课本,教的东西虽然基础,但是太TM简单了,太不实用,连站点根目录相对路径都不知道是怎么回事,还教网站开发,简直是骗钱,蒙人,浪费我的生命
深喉咙PHP4.01版本发布
建议一下官方:

官方在解决路径问题的时候采用的方法是 echo get_skin_root(); 这个势必每一个路径都会调用一次get_skin_root()方法; 这应该不是一个很优化的解决方案;

如果将该地址赋值给一个不可变变量,即 define('skin_root','/站点根目录/skins/模板目录/');完了直接 echo skin_root;

这样处理的速度应该比get_skin_root()要快;  当然,由于模板是可以更换的,所以在换模板的时候,顺便把这个define重写下模板目录;
深喉咙ASP3.3版本正式发布
不可变变量??
常量???
你的意思就是定义一组全局变量
包含所有的配置信息 ok
深喉咙PHP4.01版本发布
2楼说的很有道理。。。
不过企业网站很少调用路径,也占PHP引擎很少的处理数。。但是从全局来看,每次调用可能确实占用一定的处理时间。。
深喉咙ASP3.3版本正式发布
请教一个问题:为什么echo get_skin_root()没出错,服务器那出问题了?
返回列表