1.5PHP语言的变量(Variable)和常量(Constant)

1.变量声明

变量用美元符$后跟标识符来表示。变量名是区分大小写的。

$a = 1;

2.变量分类

2.1全局变量(global)

函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。如果函数内部需要使用,需使用global关键字调用。

<?php
$a = 1;
$b = 2;

function Sum()
{
    global $a, $b;

    $b = $a + $b;
}

Sum();//输出3
echo $b;//输出3
?>

2.2静态变量(static)

通常,当函数完成/执行后,会删除所有变量。不过,有时我需要不删除某个局部变量。实现这一点需要更进一步的工作。要完成这一点,请在您首次声明变量时使用 static 关键词:

<?php
function test()
{
    static $a = 0;
    echo $a;
    $a++;
}
?>

注意:该变量仍然是函数的局部变量。

2.3实例变量

类 内部声明的非静态变量。

2.4局部变量(local)

函数内部声明的变量拥有 Local 作用域,只能在函数内部进行访问。

3.可变变量

一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。

使用了两个美元符号($)以后,就可以作为一个可变变量。

$a = 'hello';
$$a = 'world';
//输出hello world
echo "$a ${$a}";
//等同于
echo "$a $hello";

4.内置超级全局变量

内置超级全局变量的作用域是PHP脚本的任何地方。完整列表如下:

  • $GLOBALS,引用全局作用域中可用的全部变量的数组;
  • $_SERVER,服务器环境变量数组;
  • $_GET,HTTP GET 变量数组;
  • $_POST,HTTP POST 变量数组;
  • $_FILES,HTTP 文件上传变量数组;
  • $_REQUEST,HTTP Request 变量数组;
  • $_COOKIE,Cookie变量数组;
  • $_SESSION,Session 变量数组;
  • $_ENV,环境变量数组。

5.常量

常量名称与变量的区别就是前面没有 $ 符号,一般全部大写字母。常量的作用域是全局的,它们可以在函数内外使用。

5.1define()函数定义法

define()函数定义的常量的值,除了支持const定义的值以外,还可以是任意表达式。

define(string $constant_name, mixed $value): bool

5.2const关键字定义法

const定义的常量的值,只可以是 标量类型(bool, int, float and string)的值、null值、包含标量类型的array 值。

const CONSTANT = 'Hello World';

5.3类常量

const CONSTANT = 'constant value';

5.4final类常量

可以在类常量前面加final关键字,以禁止它们在子类中被重写。

class Foo
{
    final public const XX = "foo";
}

class Bar extends Foo
{
    public const XX = "bar"; // Fatal error
}

6.魔术常量

名字说明
__LINE__文件中的当前行号。
__FILE__文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
__DIR__文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。
__FUNCTION__当前函数的名称。匿名函数则为 {closure}
__CLASS__当前类的名称。类名包括其被声明的作用域(例如 Foo\Bar)。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。
__TRAIT__Trait 的名字。Trait 名包括其被声明的作用域(例如 Foo\Bar)。
__METHOD__类的方法名。
__NAMESPACE__当前命名空间的名称。
ClassName::class完整的类名(含路径)。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/php/phplang/4937.html

(0)
上一篇 2021年1月4日 17:20
下一篇 2021年1月5日 22:42

相关推荐

  • 2.4PHP复合(Compound)类型之数组(Array)

    1.索引数组 索引数组中的值是有序的,通过索引访问。 索引数组中的值不必都属于同一个类型,而且可以随时替换值。 索引数组的长度(值的个数)可以动态改变,可以向索引数组添加、删除值。 2.关联数组 key 可以是 int 或者 string。value 可以是任意类型。 关联数组中的值是通过键访问。 关联数组里的值不必都…

    PHP语言教程 2021年2月4日
    03360
  • 1.3PHP语言的标识符(Identifier)

    标识符 任意长度,由任何字母、数字、下划线组成; 不能以数字开头; 区分大小写,函数名称例外; 命名约定

    PHP语言教程 2021年1月3日
    03430
  • 3.4PHP语言的Trait

    Trait与接口的最大区别是:Trait包含了实现,而接口则需要指定一个实现该接口的类。 Trait 和 Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。所以,Trait内部可定义抽象方法,静态属性,静态方法,实例属性,实例方法。 个人见解:Trait功能是接口的升级版,类似于Ruby语言中的Module(…

    PHP语言教程 2021年3月4日
    04230

发表评论

登录后才能评论