本文是复习所写,并不会涵盖一些基础知识点
变量
命名
有数字、字母、下划线组成,不能以数字开头,用正则表达式描述为^[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
作用域
<?php
/*
* 当前文件范围内生效
* 包括require、include进来的文件
*/
$a=1;
include'b.php';
functionc()
{
/*
* 函数内部的变量是跟函数外部的隔离的
* 通过global关键字可以将函数外部的变量引用进来
*/
global$a;
$d=2;
$d+=$a;
$d+=$GLOBALS['a']; // 也可以通过这种方式来访问$a变量
/*
* 也可以将变量声明为静态的
* 静态变量是在编译阶段就分配到特殊的内存空间,称为静态空间
* 静态变量只会初始化一次,并且不会随着函数的退出而销毁
* 千万不要引用赋值给静态变量,不会报错但是会跟预期不一致
*/
static$e=0;
$e+=1;
}
可变变量
<?php
$a='hello';
$b= ['hello'];
/*
* 等价于${$a}
* {}是限定符,用来明确范围
* $a的值是纯数字的话也可以正常执行
*/
$$a='hi';
${$b[0]} ='hi';
// 类属性也可以通过这种方式访问
classTest
{
public$hello='class inner';
}
(newTest())->$a;
(newTest())->{$b[0]};
常量
命名
常量命名跟变量命名一样,只不过不需要前面带$
定义常量
<?php
/*
* 可以使用define()、const定义常量
* 常量值只能是标量或数组,一但被定义,其值便无法更改
*
* const定义常量是在预编译阶段执行的,所以必须处于最顶端的作用域。这就是说不能在函数、循环、try/catch语句内使用
*/
constBOOK_TOTAL=20;
define('PRICE', 200);
classTest
{
constBOOKS= [];
}
$a='PRICE';
echoconstant($a); // 当需要动态获取变量的时候,建议使用这种方式
get_defined_constants(); // 获取所有已定义常量列表
作用域
常量的作用域是全局的
预定义常量
魔术常量
- __LINE__
- __FILE__
- __DIR__
- __FUNCTION__
- __CLASS__
- __TRAIT__
- __METHOD__
- __NAMESPACE__
- ClassName::class