PHP中的预定义变量和方法

摘要

在PHP开发过程中,有一些变量和和方法会被我们频繁使用。出于开发的方便,PHP在设计的时候已经提前想到了这个问题,因此为我们预定义了八个魔术变量、九个超全局变量和十五个魔术方法。对于这些预定义的变量和方法,我们可以在PHP代码的任何地方不用声明即可使用。

PHP开发过程中,有一些变量和和方法会被我们频繁使用。出于开发的方便,PHP在设计的时候已经提前想到了这个问题,因此为我们预定义了八个魔术变量九个超全局变量十五个魔术方法。对于这些预定义的变量和方法,我们可以在PHP代码的任何地方不用声明即可使用。

八个魔术变量

PHP中的魔术变量通常以__(两个下划线)开始,__(两个下划线)结束。它们的值随着它们在代码中的位置改变而改变。

  1. __LINE__ // 文件中的当前行号
  2. __FILE__ // 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名
  3. __DIR__ // 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录
  4. __FUNCTION__ // 返回该函数被定义时的名字(区分大小写)
  5. __CLASS__ // 返回该类被定义时的名字(区分大小写)
  6. __TRAIT__ // 解决单继承语言的限制,和一个类相似,但仅仅旨在用细粒度和一致的方式来组合功能
  7. __METHOD__ // 返回该方法被定义时的名字(区分大小写)
  8. __NAMESPACE__ // 返回当前命名空间的名称(区分大小写)

九个超全局变量

PHP中的超全局变量通常以$_开始。

  1. $GLOBALS // 一个包含了全部变量的全局组合数组。变量的名字就是数组的键
  2. $_SERVER // 一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建
  3. $_REQUEST // 用于收集HTML表单提交的数据,即获取POST和GET请求的参数
  4. $_POST // 获取表单的POST请求参数
  5. $_GET // 获取表单的GET请求参数
  6. $_FILES // 获取上传文件的的变量
  7. $_ENV // 获取服务器端环境变量的数组
  8. $_COOKIE // 浏览器cookie的操作
  9. $_SESSION // 服务端session的操作

十五个魔术方法

PHP中的魔术方法通常以__(两个下划线)开始,并且不需要显示的调用而是由某种特定的条件触发。

  1. __construct() // 实例化对象时被调用,当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用
  2. __destruct() // 当删除一个对象或对象操作终止时被调用
  3. __call() // 当要调用的方法不存在或权限不足时,会自动调用__call方法
  4. __callStatic() // 当调用的静态方法不存在或权限不足时,会自动调用__callStatic方法
  5. __get() // 读取一个对象的属性时,若属性存在,则直接返回属性值;若不存在,则会调用__get方法
  6. __set() // 设置一个对象的属性时,若属性存在,则直接赋值;若不存在,则会调用__set方法
  7. __toString() // 打印一个对象的时被调用。如echo $obj;或print $obj;
  8. __clone() // 克隆对象时被调用。如:$t1 = new Test();$t2 = clone $t1;
  9. __sleep() // serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此方法
  10. __wakeup() // unserialize时被调用,做些对象的初始化工作
  11. __isset() // 检测一个对象的属性是否存在时被调用。如:isset($shaw->age)
  12. __unset() // unset一个对象的属性时被调用。如:unset($shaw->age)
  13. __set_state() // 调用var_export时,被调用。用__set_state的返回值做为var_export的返回值
  14. __autoload() // 实例化一个对象时,如果对应的类不存在,则会调用__autoload方法
  15. __invoke() // 当尝试以调用函数的方式调用一个对象时,则会调用__invoke方法
  16. __debugInfo() // var_dump一个类时,返回一个包含对象属性的数组
shaw

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: