本文是温习所写,并不会涵盖一些根底知识点
变量
命名
有数字、字母、下划线组成,不能以数字结尾,用正则表达式形容为^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
。这大略是所有语言通用的规定,只不过PHP中变量名前要加上$
赋值
变量有两种赋值形式:传值赋值
和援用赋值
。
默认是传值赋值
预约义变量
PHP提供了大量的预约义变量,这些变量被别离放到几个数组中,称为预约数组。这些数组在全局范畴内失效,所以也被称为超全局变量
- $GLOBALS
- $_SERVER
- $_GET
- $_POST
- $_REQUEST
- $_SESSION
- $_COOKIE
- $_ENV
- $php_response_header – HTTP 响应头,当应用HTTP包装器时将会被HTTP响应头信息填充
- $argc
- $argv
作用域
<code class="php"><?php /* * 以后文件范畴内失效 * 包含require、include进来的文件 */ $a = 1; include 'b.php'; function c() { /* * 函数外部的变量是跟函数内部的隔离的 * 通过global关键字能够将函数内部的变量援用进来 */ global $a; $d = 2; $d += $a; $d += $GLOBALS['a']; // 也能够通过这种形式来拜访$a变量 /* * 也能够将变量申明为动态的 * 动态变量是在编译阶段就调配到非凡的内存空间,称为动态空间 * 动态变量只会初始化一次,并且不会随着函数的退出而销毁 * 千万不要援用赋值给动态变量,不会报错然而会跟预期不统一 */ static $e = 0; $e += 1; }
可变变量
<code class="php"><?php $a = 'hello'; $b = ['hello']; /* * 等价于${$a} * {}是限定符,用来明确范畴 * $a的值是纯数字的话也能够失常执行 */ $$a = 'hi'; ${$b[0]} = 'hi'; // 类属性也能够通过这种形式拜访 class Test { public $hello = 'class inner'; } (new Test())->$a; (new Test())->{$b[0]};
常量
命名
常量命名跟变量命名一样,只不过不须要后面带$
定义常量
<code class="php"><?php /* * 能够应用define()、const定义常量 * 常量值只能是标量或数组,一但被定义,其值便无奈更改 * * const定义常量是在预编译阶段执行的,所以必须处于最顶端的作用域。这就是说不能在函数、循环、try/catch语句内应用 */ const BOOK_TOTAL = 20; define('PRICE', 200); class Test { const BOOKS = []; } $a = 'PRICE'; echo constant($a); // 当须要动静获取变量的时候,倡议应用这种形式 get_defined_constants(); // 获取所有已定义常量列表
作用域
常量的作用域是全局的
预约义常量
魔术常量
- \_\_LINE\_\_
- \_\_FILE\_\_
- \_\_DIR\_\_
- \_\_FUNCTION\_\_
- \_\_CLASS\_\_
- \_\_TRAIT\_\_
- \_\_METHOD\_\_
- \_\_NAMESPACE\_\_
- ClassName::class