PHP 变量与常量
引言
在之前的入门篇教程中,我们已经见识了如何搭建 PHP 本地开发环境,选择一款适合自己的 PHP 代码编辑器,并编写了一个最简单的 PHP 程序,以及在 HTML 中嵌入 PHP 脚本,算是熟悉了 PHP 代码的基本开发和运行流程。
从今天开始,我们将花几个篇幅的教程快速过一下 PHP 基本语法,包括变量、常量、基本数据类型、数组(索引数组和关联数组)、函数(自定义函数、匿名函数、PHP 常用内置函数库)、请求数据处理(包含 Cookie 和 Session)、数据库操作等,所有这些基于函数式编程进行演示。
变量
变量声明和初始化
首先来看变量。回顾下我们在第一个 PHP 程序中编写的代码:
<?php
echo "你好,学院君!";
这里我们打印的字符串实际上是以字面量(literal)的方式定义的,我们还可以通过变量的方式先声明并初始化,再引用。在 php_learning
项目目录下创建 basic
子目录,用于存放 PHP 基本语法教程代码,这里我们先创建一个 var.php
,并初始化代码如下:
我们通过 $greeting
来声明这个欢迎字符串变量,并将其初始化为 你好,PHP!
,这里需要注意的是 PHP 是弱类型语言,变量类型在运行时确定,所以不需要声明数据类型,另外,PHP 变量的声明和初始化是一步完成的,不需要也不支持单独的声明语句。
声明为变量的好处是一次声明,多次使用,后续再要打印 你好,PHP!
,只需要引用 $greeting
这个变量即可:
<?php
$greeting = "你好,PHP!";
echo $greeting . PHP_EOL;
printf("%s\n", $greeting);
其中 PHP_EOL
是 PHP 内置的跨平台换行符常量,PHP 中字符串连接通过 .
完成,所以我们在待打印字符串之后通过 .
连接 PHP_EOL
表示紧随其后进行换行。printf 是 PHP 内置的格式化输出字符串函数,%s
表示以字符串形式输出变量,在命令行运行上述代码,输出如下:
运行时修改变量值
使用变量的另一个好处是,我们可以在运行期间对变量值进行修改:
<?php
$greeting = "你好,PHP!";
echo $greeting . PHP_EOL;
printf("%s\n", $greeting);
$greeting = "你好,学院君!";
echo $greeting;
输出如下:
变量名规则
关于 PHP 变量的基本使用就是这些,非常简单,下面我们来介绍下变量名格式要求,当我们声明一个 PHP 变量的时候,需要符合以下要求:
- 以
$
开头(坊间戏言,PHP 程序员是有多穷,才要求变量名以货币符号开头?); $
之后具体的变量名只支持字母(支持中文字符,不过我们尽量使用 ASCII 字符,以免出现意想不到的问题)、数字、下划线,并且不能以数字开头;
由于 PHP 变量名都以 $
作为前缀,所以支持将系统关键字和保留字作为变量名。
我们来看一些变量名格式的示例,前面四个满足要求,是合法变名,后面三个不满足要求,PhpStorm 会进行报错提示,执行时也会报错:
另外,PHP 变量名大小写敏感,变量名一致,大小写不一致,会被看作不同的变量:
<?php
$greeting = "你好,PHP!";
$Greeting = "你好,学院君!";
echo $greeting . PHP_EOL;
echo $Greeting . PHP_EOL;
以上代码的打印结果是:
你好,PHP!
你好,学院君!
可变变量
PHP 作为动态弱类型语言,变量声明和使用非常灵活,除了不指定类型的声明和初始化之外,还可以在变量名中引用变量,从而实现可变变量的功能,具体的实现也非常简单,就是在变量名前再加上一个 $
前缀,将对应变量值作为一个变量名进行引用。
我们来编写一段示例代码进行演示:
<?php
$greeting = "你好,PHP!";
$varName = "greeting";
echo $$varName;
上述代码的执行结果是:
你好,PHP!
因为 $varName
的变量值是 greeting
,所以当我们调用 $$varName
时,$varName
被替换成 greeting
,因此实际上引用的是 $greeting
,由于 $varName
的值可以动态设置,所以也就可以实现了一个可变变量。
常量
常量与变量相对,变量可以在运行期间修改,而常量一经定义就不能进行变更,因此常量存在的意义就是设置运行期「只读变量」,保护「这些变量」运行期间不被更改。
通过 define 函数设置
在 PHP 中定义常量有两种方式,一种是遵循 C 语言的宏定义语法,通过 define 函数设置,我们在 php_learning/basic
目录下新增 const.php
,通过 define
函数设置常量:
<?php
define("LANGUAGE", "PHP");
define("AUTHOR", "学院君");
echo LANGUAGE . ": " . AUTHOR . PHP_EOL;
在上述代码中设置了两个常量,LANGUAGE
和 AUTHOR
,常量名不需要 $
前缀(也不能设置),并且为了和变量做区分,通常都是以大写字母进行命名(同样大小写敏感),此外,常量名的命名规则除了不需要 $
前缀之外,其他和变量名一样,只支持字母、数字、下划线,并且不能以数字开头。
如果我们试图在常量设置之后进行修改会报解析错误:
此外,通过 define
定义的常量全局有效,所以通常在项目初始化期间通过这种方式定义全局常量。
通过 const 修饰符设置
另外,PHP 还支持以 const
修饰符的方式定义常量,这种定义方式通常用于在类中设置只读属性(类常量),不过也可以在 PHP 文件中使用:
<?php
define("LANGUAGE", "PHP");
define("AUTHOR", "学院君");
const FRAMEWORK = "Laravel";
echo LANGUAGE. '-' . FRAMEWORK . '-' . AUTHOR . PHP_EOL;
使用 const
修饰符定义的常量命名规则和 define
完全一致,并且不能定义已经在 define
中声明过的常量,具体细节不再重复介绍,上述代码的执行结果是:
PHP-Laravel-学院君
关于 PHP 中的变量和常量我们就简单介绍到这里,到目前为止,我们所有的示例代码都是围绕字符串展开的,下一篇教程,我们来介绍 PHP 中的其他基本数据类型及其使用。
No Comments