PHP常量:Const和Define有什么区别?

在初学PHP时,我对这两个函数有点迷糊,虽然知道如何使用,但不知道设计这两个有什么意义。

Const

const是一种语言结构,最早只能用在类(class)内,PHP5.3之后可以用在类外,实现了通用。

class ClassName{
    const abc="123";
}
echo ClassName::abc;

输出:123
//PHP 5.3之后
const abc="123";
echo abc;

输出:123

Define

define是一个函数,不能用在类(class)内

define("abc","123");
echo constant("abc");
echo "  ";
echo abc;

输出:123 123

其他区别

  1. const可以在类中使用,define不可以。在PHP5.3以前,const只能在类中使用,而PHP5.3开始在类外也可以使用。
  2. const不能在条件分支中使用,而define可以。
  3. const只能用普通的常量名称,define可以使用表达式。
  4. const在PHP5.6之前只接受静态的标量,从PHP5.6开始可以使用表达式,define可以使用表达式。
  5. const定义的常量是大小写敏感的,而define可以通过第三个参数来指定是否大小写敏感(true不敏感;false敏感,默认为false)。
  6. const定义常量时考虑命名空间,而define不会。简单来说就是const可以在不同的命名空间下定义同名的常量,而define则不可以。
  7. 常量可以通过常量名直接访问,也可以通过constant()函数访问,通过get_defined_constants()可以获得所有已定义的常量。

来源:CSDN社区用户:_荣耀之路_

个人以为

对于初学者而言,const好记、好用,明显更加便利,如学生信息,Student::age、Student::weight、Student::name......它们可以根据Student类来自动生成,比写一堆define和student前缀来得简单和方便,也减少了出错概率,若养成了使用const在类中定义常量的习惯,可以使代码更加语义化,增强可读性。

原创文章,作者:STEVE,如若转载,请注明出处:https://shinecloud.com.cn

(1)
上一篇 2022年 10月 19日 上午12:42
下一篇 2022年 10月 19日 上午11:32

相关推荐

  • PHP:in_array()和array_search()的奇葩问题

    近期做项目,发现使用array_search出现的问题——搜索出错,元素分明有在数组中,但给出的结果是FALSE! 操作逻辑如下 从数据库中取出符合条件的字符串的用户id合集 使用foreach遍历这些对象 将对象中的字符串使用expl...

    2022年 11月 20日
    48
  • PHP:数组变量的序列化和反序列化

    序列化和反序列化是PHP操作数据库、读写文件时常见的操作。 序列化,就是将PHP的变量转化为可保存的、可传输的字符串的过程; 反序列化,则是将(序列化的)字符串转化回变量。 比如,我们需要将某学生的个人信息写...

    2022年 10月 25日
    34
  • PHP类:$this和self关键字

    $this是指向对象的指针,self是指向当前类的指针。 来一个案例 $this只能在成员方法中使用。self既可以在成员方法中使用,也可以在静态方法中使用,用来调用类的常量、静态属性和方法。 若在静态方法中调用$this关键...

    2022年 10月 19日
    35
  • PHP连接数据库:使用类和函数两种方式

    PHP连接数据库是非常常用的功能,在初学时,一般使用函数来连接。 函数的方式非常简单,如果不需要报错信息的话,只有2行代码,加上报错信息,也只有6行而已。 我们尝试定义一个类来连接数据库,如下所示: 好家伙,...

    2022年 10月 20日
    54
  • PHP类:成员、静态、常量的区别和选择

    PHP的类中,分为常量、静态、成员三类,初学者很容易搞混乱,笔者在学习之时也深感头疼,觉得不好理解。 分享一下学习的总结,如有错误之处敬请指正。 权限修饰符 权限修饰符用来声明变量的权限,共有三种。 public...

    2022年 10月 19日
    49

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注