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

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来替换:

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

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

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

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

时间: 2024-08-25 18:37:08

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

【PHP高级特性】魔术方法/魔术常量

魔术方法 是PHP面向对象中特有的特性.它们在特定的情况下被触发,都是以双下划线开头,你可以把它们理解为钩子,利用魔术方法可以轻松实现PHP面向对象中重载(Overloading即动态创建类属性和方法).魔术方法很多还是成对出现的,以下列出目前PHP中所有的模式方法. 1.__construct和__destruct __constuct 实例化对象的时候被调用,适合用于对象的初始化操作 __destruct 明确销毁对象或脚本结束时被调用 2.__get和__set __set 当给不可访问或

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

常量 定义: 形式一 // define("PI",常量值); define("PI",3.14); define("school","讲理"); 形式二 // 定义形式二 const cc1 = 1234; const cc2 = "abcd"; 使用: 形式一 // 直接使用常量名 echo "PI的值:".PI; 形式二 // 通过constant函数,灵活性体现-->常量名

PHP魔术方法和魔术常量

1>魔术常量 1.__LINE__返回文件中的当前行号.2.__FILE__ 返回文件的完整路径和文件名.如果用在包含文件中,则返回包含文件名.自PHP4.0.2 起,__FILE__总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径.3.__FUNCTION__ 返回函数名称(PHP4.3.0 新加).自PHP5 起本常量返回该函数被定义时的名字(区分大小写).在PHP4 中该值总是小写字母的.4.__CLASS__ 返回类的名称(PHP4.3.0 新加).自PHP5 起本常量返回该

PHP中的魔术方法和魔术常量

看上去好像挺烦人,但只要通过例子测试一下,就明白了.不做测试,只是看,第二天还是不明白.当然我在抄其他人的日志,然后希望能是自己的理解就好,原文地址PHP的魔术方法和魔术敞亮简介和使用--LaraBot 魔术方法(Magic methods) In PHP, methods start with two "_"is called magic methods, these methods act as very important role, magic method includes:

魔术常量对文件引入、function handling、递归和迭代【分治】、匿名函数、数组和数组指针内容

1.注意魔术常量被引入的问题a.php中载入b.php[其中b.php中输出魔术常量__FILE__输出的是b.php的路径]魔术常量被编译的顺序要在a中代码进行处理之前[可以理解为魔术常量在引入前的编译过程中就已经被预编译]魔术常量相当于占位符[而不是一个引入文件中的变量][注意魔术常量的处理方式]对文件载入过程的理解进一步[就是文件载入语句在文件中执行时,对被载入文件进行编译和复制(这样保证载入的问题的解决)][另外载入文件的作用域问题:载入文件的作用域取决于被载入的位置(例子就是在func

20150110--魔术方法魔术常量+面向对象-01

回顾 面向对象编程:类,对象和实例化 类成员:属性,方法和类常量,访问修饰限定符(public,protected和private) 对象访问属性和方法:对象->属性/方法(实参列表); 内部访问:$this,代表当前进入到类内部的对象 魔术方法:构造方法和析构方法 对象传值,对象比较 面向对象 类的加载 因为要得到一个类的对象,必须先保证类结构已经在内存中(代码段). 自动加载 在需要用到类的时候,系统会根据指定好的路径去找对应的类文件(文件名为基础),然后根据用户指定的操作,对文件进行处理(

PHP魔术常量

系统常量是PHP已经定义好的常量,我们可以直接拿来使用,常见的系统常用有:(1)__FILE__ :php程序文件名.它可以帮助我们获取当前文件在服务器的物理位置.(2)__LINE__ :PHP程序文件行数.它可以告诉我们,当前代码在第几行.(3)PHP_VERSION:当前解析器的版本号.它可以告诉我们当前PHP解析器的版本号,我们可以提前知道我们的PHP代码是否可被该PHP解析器解析.(4)PHP_OS:执行当前PHP版本的操作系统名称.它可以告诉我们服务器所用的操作系统名称,我们可以根据

PHP中的魔术方法和魔术常量简介和使用

魔术方法(Magic methods) PHP中把以两个下划线__开头的方法称为魔术方法,这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __construct(),类的构造函数 __destruct(),类的析构函数 __call(),在对象中调用一个不可访问方法时调用 __callStatic(),用静态方式中调用一个不可访问方法时调用 __get(),获得一个类的成员变量时调用 __set(),设置一个类的成员变量时调用 __isset(),当对不可访问属性调用isset()或e

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

一.魔术函数(13个) 1.__construct() 实例化对象时被调用, 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用. 2.__destruct() 当删除一个对象或对象操作终止时被调用. 3.__call() 对象调用某个方法, 若方法存在,则直接调用:若不存在,则会去调用__call函数. 4.__get() 读取一个对象的属性时,若属性存在,则直接返回属性值: 若不存在,则会调用__get函数. 5.__set() 设置一个