我们在日常的开发中经常会使用一些PHP定义好的一些函数,比如字符串截取函数substr(),strpos()等等,但是这些函数是在处理数据的时候才会使用,没有数据,函数在好用也是空谈,那么问题来了,数据是怎么来的呢?有的人会说数据是前端页面传过来的,那么前端页面传过来的值,我们后台PHP程序要怎样去接收?
的确数据是从前端页面传递过来的,而后台程序能够接受数据,要归功于PHP内的预定义变量,并且在一些特别大的项目的时候魔术常量也为我们节省了许多代码的书写时间;
预定义变量
PHP为我们提供了大量的预定义变量,方便我们的开发行为,这些预定义变量我们可以在任何地方进行使用而且不需要命名空间,所以预定义变量又可以叫超全局变量,在函数或者方法内不需要执行global,并且这些预定义变量用起来是大小写是严格遵守的 ;
1
$GLOBALS
引用全局作用域中可用的全部变量,并且在PHP中总是可用的,并且和global的意义并不相同
2
$_SERVER
服务器和执行环境信息,该预定义变量的返回信息是一个包含了头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建,但是不是所有的服务器返回的内容都是一样的。
3
$_GET
HTTP GET 变量,包含通过URL参数传递给当前脚本的变量的数组,并且$_GET是通过urldecode来传递的,urldecode代码已经解码已编码的 URL 字符串;
4
$_POST
HTTP POST 变量,当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前脚本;
5
$_FILES
HTTP 文件上传变量,通过HTTP POST方式上传到当前脚本的文件的数组,这个数组有可能是二维的也可能是多维的;
6
$_REQUEST
HTTP Request 变量,默认情况下包含了$_GET,$_POST,$_COOKIE的数组;
7
$_SESSION
Session 变量,存储的是一个数组,下方打印的是session_id();
8
$_COOKIE
HTTP Cookies,下方打印的cookie的是session_id的值,因为session是基于cookie的,当给浏览器发送请求的时候,会自动创建一条cookie名称为SESSID的cookie值;
8
$_ENV
环境变量,通过环境方式传递给当前脚本的变量的数组。这些变量被PHP解析器运行环境导入到PHP的全局命名空间,返回的值不一定都一样;
9
$php_errormsg
前一个错误信息,变量包含由 PHP 生成的最新错误信息。这个变量只在错误发生的作用域内可用,并且要求 track_errors 配置项是开启的(默认是关闭的)。
10
$HTTP_RAW_POST_DATA
原生POST数据
11
$http_response_header
HTTP 响应头,返回的是带有当前请求信息相关的索引数组
12
$argc,$argv
第一个是传递给脚本的参数数目,第二个是传递给脚本的参数数组;
1,因为脚本的文件名总是作为参数传递给当前的脚本,因此 $argc 的最小值为 1,并且这个变量仅在 register_argc_argv 打开时可用;
2,针对于第二个预定义变量,$argv第一个参数总是当前脚本的文件名,因此 $argv[0] 就是脚本文件名。
魔术常量
PHP中提供了八个魔术常量,因为它们的值随着它们在代码中的位置改变而改变,而且魔术常量和普通变量不同,它们在书写的不区分大小写,但是按照规范都写成大写的
1
__LINE__文件中的当前行号,数据类型为整型,并且区分空行,一个空行算一行;
2
__FILE__文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名, 返回的是一个绝对路径(如果是符号连接,则是解析后的绝对路径);
3
__DIR__文件所在的目录.如果用在被包括文件中,则返回被包括的文件所在的目录
4
__FUNCTION__ 常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
5
__CLASS__ 返回该类被定义时的名字(区分大小写)
6
__TRAIT__ 常量返回 trait 被定义时的名字(区分大小写)
7
__METHOD__返回该方法被定义时的名字(区分大小写)
8
__NAMESPACE__当前命名空间的名称(区分大小写)
END
PHP公馆
专注PHP学习
关注我们关注未来的你
领取专属 10元无门槛券
私享最新 技术干货