乐趣区

关于php: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
退出移动版