内容尚空
LeoYao
4年前
修改理由:
此投稿已在 4年前 合并。
内容修改:
Old | New | Differences |
---|---|---|
1 | ||
1 | ## 问题 | |
2 | ||
3 | 我们通常把不变的值定义成常量,那么我们在 PHP 编程中如何定义常量呢? | |
4 | ||
5 | ## 回答 | |
6 | ||
7 | 在 PHP 编程中,我们一般使用 `define` 函数和 `const` 关键字来定义常量。**合法的常量名以字母或下划线 `_` 开始,后面跟任何字母 `A-z`,数字 `0-9` 或下划线 `_` **。而在传统的 PHP 编程中,常量标识符总是大写的。 | |
8 | ||
9 | 常量和变量的区别如下: | |
10 | ||
11 | - 常量命名的前面没有美元符号 `$` 修饰符; | |
12 | - 常量只能用 `define` 函数和 `const` 关键字定义; | |
13 | - 常量一旦定义就不能被重新定义或者取消定义; | |
14 | - 常量的值只能是标量(数值或者字符串)。 | |
15 | ||
16 | ## 使用 `define` 定义常量 | |
17 | ||
18 | ### 语法 | |
19 | ||
20 | ``` | |
21 | define("常量名", 常量值, 布尔值); | |
22 | ``` | |
23 | ||
24 | 语法解析: | |
25 | 1. 常量名代表的是定义的常量的名称; | |
26 | 2. 常量值代表的是常量的值; | |
27 | 3. 布尔值代表的是常量名是否大小写敏感(默认为 `false`),`true` 代表不敏感,`false` 代表敏感。 | |
28 | ||
29 | ### 示例 | |
30 | ||
31 | ```php | |
32 | <?php | |
33 | ||
34 | // 1. 合法的常量名。 | |
35 | define("FOO", "something"); | |
36 | ||
37 | define("FOO2", "something else"); | |
38 | ||
39 | define("FOO_BAR", "something more"); | |
40 | ||
41 | // 2. 非法的常量名。 | |
42 | define("2FOO", "something"); | |
43 | ||
44 | // 3. 下面的定义是合法的,但应该避免这样做(自定义常量不要以双下划线 __ 开头): | |
45 | // 也许将来有一天 PHP 会定义一个 __FOO__ 的魔术常量, | |
46 | // 这样就会与你的代码相冲突。 | |
47 | define("__FOO__", "something"); | |
48 | ||
49 | // 4. 在类中不能使用 define 定义常量。 | |
50 | class MyClass { | |
51 | ||
52 | define("FOO3", "something"); | |
53 | ||
54 | } | |
55 | ``` | |
56 | ||
57 | 注:`define` 函数不能在类中定义常量,通过 `get_defined_constants()` 函数可以获得所有用 `define` 定义的常量 | |
58 | ||
59 | ## 使用 `const` 定义常量 | |
60 | ||
61 | `const` 一般用于在类中定义常量,PHP 在 5.3.0 以后才开始支持 `const`。 | |
62 | ||
63 | ### 语法 | |
64 | ||
65 | ``` | |
66 | const 常量名 = 常量值; | |
67 | ``` | |
68 | ||
69 | ### 示例 | |
70 | ||
71 | ```php | |
72 | <?php | |
73 | ||
74 | class MyClass | |
75 | { | |
76 | ||
77 | const constant = '我是一个常量'; | |
78 | ||
79 | } | |
80 | ||
81 | echo MyClass::constant; | |
82 | ``` | |
83 | ||
84 | 运行结果: | |
85 | ||
86 | ``` | |
87 | 我是一个常量 | |
88 | ``` |