利用魔术常量的特性定义绝对地址!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用魔术常量的特性定义绝对地址!相关的知识,希望对你有一定的参考价值。

1.为什么我们要选择这个特性去定义绝对地址呢?

  因为一般来说,在选择载入文件的时候都是选择绝对路径来加载的,可是,这种定义的绝对路径有一个致命的缺点是:当我们移动该文件的时候,他在每一部计算机上的绝对路径是不一样的,那么如何解决这个问题呢??

  那么我们先来看一下在两部不同的计算机上的同一个文件的加载路径。

 1 A: D:/AMP/apache/htdocs/text/lianxi.php

 2 B: e:/amp/fuwuqi/apache/htdocs/text/lianxi.php 

 其实我们可以发现,虽然在两部不同的计算机上绝对路径看似不一样,但是认真观察也会发现一些问题:

1.他们不同的地方其实就是路径的黑色部分,那么这个部分其实就是相对于每一部不同计算机自己而已,但是后面的加粗,下划线部分肯定是相同的,这个部分肯定是相对于我们所建的这个项目的文件夹来说,所以我们就从这个地方入手!

换个角度想,我们如何得到这个黑色部分的路径呢??

魔术常量:其值,由代码所在的位置决定的,也就是说,出现的位置不一样的时候,其值也不一样!

_DIR_: 当前脚本所在的目录

所以我们就可以配合利用一个魔术常量来定义这个地址:

 

第一:我们要获取到当前脚本目录地址:

技术分享

 注意:由于linux操作系统下的目录分隔符只支持正斜杠/,为了兼容,要把上面的路径中的反斜杠变成正斜杠,这个时候,需要使用一个系统函数str_replace来替换:

技术分享

 

  (我们需要把反斜干改成正斜干)

 

  然后加上我们想要加载文件的文件名就可以了。

  技术分享

  

  拓展:同理,我想加载一个其他文件夹的文件呢?

 

  解析:其实道理都一样,你确定你当前文件的根目录在哪?利用魔术常量定义的地址是你当前文件的地址,那么在一次找到你的文件夹,然后再找文件就可以咯!

 

以上是关于利用魔术常量的特性定义绝对地址!的主要内容,如果未能解决你的问题,请参考以下文章

PHP魔术方法和魔术常量

php常量,提前定义常量,魔术常量及基本数据类型

17PHP 魔术常量

几个常用的魔术常量

几个 PHP 的“魔术常量”

PHP魔术函数魔术常量预定义常量