PHP变量与常量

本文是复习所写,并不会涵盖一些基础知识点

变量

命名

有数字、字母、下划线组成,不能以数字开头,用正则表达式描述为^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$。这大概是所有语言通用的规则,只不过PHP中变量名前要加上$

赋值

变量有两种赋值方式:传值赋值引用赋值

默认是传值赋值

预定义变量

PHP提供了大量的预定义变量,这些变量被分别放到几个数组中,称为预定数组。这些数组在全局范围内生效,所以也被称为超全局变量

  1. $GLOBALS

  2. $_SERVER

  3. $_GET

  4. $_POST

  5. $_REQUEST

  6. $_SESSION

  7. $_COOKIE

  8. $_ENV

  9. $php_response_header - HTTP 响应头,当使用HTTP包装器时将会被HTTP响应头信息填充

  10. $argc

  11. $argv

作用域

 <?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;
 }

可变变量

 <?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]};
 ​

常量

命名

常量命名跟变量命名一样,只不过不需要前面带$

定义常量

 <?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(); // 获取所有已定义常量列表

作用域

常量的作用域是全局的

预定义常量

魔术常量

  1. __LINE__

  2. __FILE__

  3. __DIR__

  4. __FUNCTION__

  5. __CLASS__

  6. __TRAIT__

  7. __METHOD__

  8. __NAMESPACE__

  9. ClassName::class

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值