php预定义变量,魔术常量,魔术方法

预定义变量

对于全部脚本而言,PHP 提供了大量的预定义变量。这些变量将所有的外部变量表示成内建环境变量,并且将错误信息表示成返回头。

  • 超全局变量 — 超全局变量是在全部作用域中始终可用的内置变量

  • $GLOBALS — 引用全局作用域中可用的全部变量

  • $_SERVER — 服务器和执行环境信息

  • $_GET — HTTP GET 变量

  • $_POST — HTTP POST 变量

  • $_FILES — HTTP 文件上传变量

  • $_REQUEST — HTTP Request 变量

  • $_SESSION — Session 变量

  • $_ENV — 环境变量

  • $_COOKIE — HTTP Cookies

  • $php_errormsg — 前一个错误信息

  • $HTTP_RAW_POST_DATA — 原生POST数据

  • $http_response_header — HTTP 响应头

  • $argc — 传递给脚本的参数数目

  • $argv — 传递给脚本的参数数组

魔术常量

PHP 向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。

有八个魔术常量它们的值随着它们在代码中的位置改变而改变。例如     __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下:


  1. __LINE__   文件中的当前行号。

  2. __FILE__   文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自PHP 4.0.2 起,__FILE__总是包含一个绝 对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。

  3. __DIR__    文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于          dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增) =

  4. __FUNCTION__  函数名称(PHP 4.3.0 新加)。自 PHP 5          起本常量返回该函数被定义时的名字(区分大小写)。在          PHP 4 中该值总是小写字母的。

  5. __CLASS__  类的名称(PHP 4.3.0 新加)。自 PHP 5          起本常量返回该类被定义时的名字(区分大小写)。在          PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如          Foo\Bar)。注意自 PHP 5.4 起 __CLASS__          对 trait 也起作用。当用在 trait 方法中时,__CLASS__          是调用 trait 方法的类的名字。

  6. __TRAIT__  Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait          被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如          Foo\Bar)。

  7. __METHOD__  类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。

  8. __NAMESPACE__  当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。 


魔术方法

PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用。 魔术方法包括:

  • __construct(),类的构造函数

  • __destruct(),类的析构函数

  • __call(),在对象中调用一个不可访问方法时调用

  • __callStatic(),用静态方式中调用一个不可访问方法时调用

  • __get(),获得一个类的成员变量时调用

  • __set(),设置一个类的成员变量时调用

  • __isset(),当对不可访问属性调用isset()或empty()时调用

  • __unset(),当对不可访问属性调用unset()时被调用。

  • __sleep(),执行serialize()时,先会调用这个函数

  • __wakeup(),执行unserialize()时,先会调用这个函数

  • __toString(),类被当成字符串时的回应方法

  • __invoke(),调用函数的方式调用一个对象时的回应方法

  • __set_state(),调用var_export()导出类时,此静态方法会被调用。

  • __clone(),当对象复制完成时调用

  • __autoload(),尝试加载未定义的类

  • __debugInfo(),打印所需调试信息


白俊遥博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论