PHP 常量定义以及用法

Posted 2020-05-06updated 2020-05-08Words 651Reading time 4m

常量介绍

  • 特点: 不能修改,不能销毁,不能删除,声明常量后,该常量可以在页面的任意处使用
  • 声明常量的方法:const 、define、static
  • 命名规范:和变量一样,但是全部大写

const

const是一个语言结构,编译时要比define快,是为全局常量,可在对象里定义,类中使用,可理解为类常量

一般的,我们的代码需要分层,小编的具体分层在另一篇博客上[NULL],有兴趣的话可以去看,在这里,小编以自己的编码实例来演示常量的定义以及方法使用

const常量定义

首先,在做一个项目模块的时候,小编会新开一个Do层存放常量,DO层具体位置看每个项目存放DO的位置

在这里新建一个TestDo.php文件,我们往里面丢东西

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
namespace application\models\domain;

/**
* Class TestDo
*/
class TestDo
{
/**
* 配方开发类型:优品
* @var string
*/
public const TYPE_SUPERIOR = 'superior_product';

/**
* 配方开发类型:新品
* @var string
*/
public const TYPE_NEW = 'new_product';

/**
* 待中心审核
* @var string
*/
public const SATE_AUDIT_PENDING_FIRST = 'pendingFirstAudit';

/**
* 中心审核失败
* @var string
*/
public const SATE_AUDIT_FAIL_FIRST = 'firstAuditFailure';

/**
* 待经理审核
* @var string
*/
public const SATE_AUDIT_PENDING_SECOND = 'pendingSecondAudit';

/**
* 经理审核通过
* @var string
*/
public const SATE_AUDIT_PASS_SECOND = 'secondAuditPass';

}

常量的使用

紧接下来,我们需要再logic层(处理数据格式)使用这些常量,
首先,use使用这个TestDo。(引入命名空间),然后我们把字符串存放到数组中,做到[key => 常量对应的值;值 => 我们的预期结果],代码方法如下

1
2
3
4
5
6
7
8
9
10
11
12
/**
* @return array
*/
public static function getStatusList(): array
{
return [
TestDo::SATE_AUDIT_PENDING_FIRST => '待中心审核',
TestDo::SATE_AUDIT_FAIL_FIRST => '中心审核失败',
TestDo::SATE_AUDIT_PENDING_SECOND => '待经理审核',
TestDo::SATE_AUDIT_PASS_SECOND => '经理审核通过',
];
}

我们存放在数据库中,一般是常量对应的值,所以对数据要进行格式化,编写此方法,在数据渲染的时候直接引用此方法进行数据格式渲染

1
2
3
4
5
6
7
8
9
/**
* @param string $status
* @return string
*/
public static function getStatusCN(string $status): string
{
$statusMapper = self::getStatusList();
return $statusMapper[$status] ?? '----';
}

也可以这样使用

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
* @param string $developType
* @return string
*/
public static function getDevelopTypeCN(string $developType): string
{
$developTypeMapper = [
TestDo::TYPE_SUPERIOR => '优化',
TestDo::TYPE_NEW => '新品'
];

return $developTypeMapper[$developType] ?? '----';
}

数据渲染使用

接下来我们举一个例子:来引用我们定义的方法

1
2
3
4
5
$array = ['superior_product', 'new_product'];

foreach ($array as $key => $item) {
$array[$key] = self::getDevelopTypeCN($item);
}

在数据量庞大的时候,这样渲染数据简单明了,代码复用率超高,其他开发人员接口也一看就懂,好了,在这里const常量的分享就到这里了