最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

php常量定义的方式有哪些

来源:懂视网 责编:小采 时间:2020-11-03 23:11:34
文档

php常量定义的方式有哪些

php常量定义的方式有哪些:php常量定义的方式有哪些在PHP中可以通过define()和const两种方式定义常量。可是在开发中我们应该什么时候用define()定义常量,什么时候用const定义常量? 这两种方式定义常量的主要区别是什么?从5.3版本开始PHP有两种方法来定义常量,使用const关键字
推荐度:
导读php常量定义的方式有哪些:php常量定义的方式有哪些在PHP中可以通过define()和const两种方式定义常量。可是在开发中我们应该什么时候用define()定义常量,什么时候用const定义常量? 这两种方式定义常量的主要区别是什么?从5.3版本开始PHP有两种方法来定义常量,使用const关键字

php常量定义的方式有哪些?

在PHP中可以通过define()和const两种方式定义常量。

可是在开发中我们应该什么时候用define()定义常量,什么时候用const定义常量? 这两种方式定义常量的主要区别是什么?

从5.3版本开始PHP有两种方法来定义常量,使用const关键字或者是使用define()方法:

const FOO = 'BAR';
define('FOO', 'BAR');

两者之间最大的区别在于const是在编译时定义常量,而define()方法是在运行时定义常量。

const不能用在if语句中, defne()能用在if语句中。

 if(...) {
 const FOO = 'BAR';//错误
 }
 if(...) {
 define('FOO', 'BAR');//正确
 }

define()的一个常用场景是先判断常量是否已经定义再定义常量:

 if(defined('FOO)) {
 define('FOO', 'BAR')
 }

const 定义常量时,值只能是静态标量(数字, 字符串, true,false, null), 而define()方法可以把任意表达式的值用作常量的值。从PHP5.6开始const也允许把表达式用作常量的值了。

const BIT_5 = 1 << 5; //PHP5.6后支持,之前的PHP版本不支持
define('BIT_5', 1 << 5);// 所有PHP版本都支持

const 只允许简单的常量名,而define()可以把任何表达式的值用作常量名

for ($i = 0; $i < 32; $i++) {
 define('BIT_' . $i, 1 << $i);
}

const 定义的常量常量名是大小写敏感的,而传递true给define()方法的第三个参数时可以定义大小写不敏感的常量。

define('FOO', 'BAR', true);
echo FOO; //BAR
echo foo; //BAR

上面列举的都是const相较define()而言的一些缺点或者不灵活的地方,下面我们看一下为什么我个人推荐用const而不是define()来定义常量(除非要在上述列举的场景中定义常量)。

const 具有更好的可读性,const是语言结构而不是函数,而且与在类中定义类常量的形式保持一致。

const在当前的命名空间中定义常量, 而define()要实现类似效果必须在定义时传递完整的命名空间名称:

namespace ABC;
//To define the constant ABCFOO:
const FOO = 'BAR';
define('ABCFOO', 'BAR');

const从PHP5.6版本开始可以把数组用作常量值,而define()在PHP7.0版本开始才支持把数组用作常量值。

const FOO = [1, 2, 3];// valid in PHP 5.6
define('FOO', [1, 2, 3]);// invalid in PHP 5.6, valid in PHP 7.0

因为const是语言结构并且在编译时定义常量所以const会比define() 稍稍快一些。

众所周知PHP在用define()定义了大量的常量后会影响效率。 人们设置发明了apc_load_constants()和hidef来绕过define()导致的效率问题。

最后,const还能被用于在类和接口中定义常量,define()只能被用于在全局命名空间中定义常量:

class FOO
{
 const BAR = 2;// 正确
}
class Baz
{
 define('QUX', 2)// 错误
}

总结:

除非要在if分支里定义常量或者是通过表达式的值来命名常量, 其他情况(即使是只是简单的为了代码的可读性)都推荐用const替代define()。

推荐:《PHP教程》

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

php常量定义的方式有哪些

php常量定义的方式有哪些:php常量定义的方式有哪些在PHP中可以通过define()和const两种方式定义常量。可是在开发中我们应该什么时候用define()定义常量,什么时候用const定义常量? 这两种方式定义常量的主要区别是什么?从5.3版本开始PHP有两种方法来定义常量,使用const关键字
推荐度:
标签: 有什么 方法 定义
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top