1.1.1. 02.变量与常量


php 变量通常以美元 $ 符号开头,以字母、下划线开头,后面跟任意字母、数字、下滑线。 php 的变量大小写敏感,通常以小驼峰或单词以下划线隔开来命名。如 $productSku 或 $product_sku $this 是一个特殊的变量,不能定位成 this 变量。

  $a; // 合法
  $_a; // 合法
  $2a; // 非法

1. 变量的引用赋值

通过给变量钱加 & 来赋值。只能引用有值的变量。

  $a = 4;
  $b = &$a; 
  $b = 5;
  echo $a; // 5
  echo $b; // 5

2. 预定义变量

超全局变量:在全部作用域下始终可用的内置变量

超全局变量 解释
$GLOBALS 引用全局作用域中所有的全部变量
$_GET HTTP GET 变量
$_POST HTTP POST 变量
$_REQUREST HTTP Request 变量
$_SERVER 服务器和执行环境信息
$_FIELS 文件上传变量
$_SESSION Session 变量
$_COOKIE Cookie 变量
$_ENV 环境变量

预定义变量 |预定义变量|解释| |:--:|:--:| |$php_errormsg | 前一个错误信息| |$HTTP_RAW_POST_DATA | 原生POST数据| |$http_response_header | HTTP 响应头| |$argc | 传递给脚本的参数数目| |$argv | 传递给脚本的参数数组|

3. 可变变量

变量名称本身是个变量的变量叫可变变量1

超全局变量和 $this 不可用作可变变量。

  $a = 'b';
  $b = '4';
  echo $$a; // 4

4. 变量的作用域

在文件最外层定义的变量是全局变量。 函数内部的变量是局部变量,局部变量只能在函数内访问。

  $a = 123;
  function test(){
    echo $a;
  }
  echo $a;  // 123;
  test();   // 无输出

在函数内通过 static 修饰的变量,仅在局部函数内存在,当程序作用完之后离开时,静态变量不会消失,等全部程序执行完成后才会销毁。

    function test(){
      static $a = 0; // 正确
      static $a = 1; // 会报错,static 不能重复通过 static 定义。
      $a++;
      echo $a;
    }
    test(); // 1
    test(); // 2

在函数内部通过 global 修饰函数外部全局变量,可以使全局变量能够作用于局部函数内部

  <?php
    $a;
    function test(){
      global $a;
      $a++;
      echo $a.PHP_EOL;
    }
    test(); // 1
    test(); // 2

5. 常量

常量是定义之后就不能更改的变量。通常由 define() 函数来定义。常量通常大写,其他命名规则与变量类似。

  define('IS_DEBUG',0);

在常量中还有一些系统预定义好的常量。如 PHP_EOL 换行。

8 个魔术常量

常量 解释
LINE 文件中当前行号
FILE 返回包含当前文件名的绝对路径
DIR 返回当前文件所在文件夹的绝对路径(结尾不包含反斜杠/)
FUNCTION 返回当前函数的名称
CLASS 返回当前类的名称
TRAIT 返回 trait 的名字
METHOD 返回类的方法名
NAMESPACE 返回命名空间
namespace App;

class test{
    public function a(){
        echo __CLASS__.PHP_EOL;
        echo __METHOD__.PHP_EOL;
        echo __NAMESPACE__.PHP_EOL;
        echo __FUNCTION__.PHP_EOL;
    }
}

$obj = new test();
$obj->a();
// 输出 App\test
// App\test::a
// App
// a
Copyright © Kagami丶 2019 all right reserved,powered by Gitbook该文件修订时间: 2019-10-17 19:28:55

results matching ""

    No results matching ""