1. 文章
  2. 文章详情

PHP语言常量解析

定义

指一个简单值的标识符(名字),常量值只有4种:Bool、Integer、float、String,其值在脚本执行期间不能改变(除了魔术常量,它们其实不是常量)。常量默认为大小写敏感。传统上常量标识符总是大写的。合法的常量名以字母或下划线开始,后面接任何字母,数字或下划线。常量只能包含标量数据,也可定义资源型,但不推荐

两种定义方式:

Define( 'name' , 'value' , [true] )

第三项设置为 TRUE,则大小写不敏感。默认敏感。

Const name= 'value'

Const关键字一般用在面向对象类中定义,称为“类常量”,使用const定义常量必须处于最顶端的作用区域,因为此方法在编译时定义,因此不能在函数、循环以及if语句内使用。

获取常量值:

constant ( 'name' )

当常量的值未知,可用该函数获取,返回常量的值,若常量未定义则返回 NULL。

get_defined_constants ([ bool $categorize = false ] )

返回当前所有已定义的常量名和值。这包含define函数所创建的以及所有扩展所创建 的。第三个参数让函数返回一个多维数组,分类为第一维的键名,常量与其值位于第二维。

检测是否存在:

defined ( 'name')

返回T/F,只能检测常量,检变量用isset(),函数用function_exist()

特点

►没有作用域的局限,在当前的脚本中定义后,可在任意页面使用

►定义后不可修改、不可删除

常量主要避免重复定义,篡改变量值。在团队开发或代码量很大时,对于一些第一次定义后不改变的量,在不知情的情况下使用同一变量名时,变量值就会被替换掉,从而引发服务器执行错误。使用常量还能提高代码的可维护性。

与变量的区别

1. $ 常量前面没有($)

2. define常量只能用 define() 函数定义,而不能通过赋值语句

3. 作用域 常量可以不用理会变量的作用域而在任何地方定义和访问

4. 重定义常量一旦定义就不能被重新定义或者取消定义

5. 标量类型 常量的值只能是标量

6. 命名空间 常量和(全局)变量在不同的名字空间中

魔术常量

PHP提供的8个预定义常量,使用时不区分大小写

__LINE__ 返回当前行号

__FILE__ 以绝对路径形式返回文件完整路径与文件名

__DIR__ 返回文件所在目录,等价于dirname(__FILE__)

__FUNCTION__ 返回函数名称

__CLASS__ 返回类名称

__TRAIT__ Trait的名字

__METHOD__ 类的方法名

__NAMESPACE__ 当前命名空间名称

参考:https://zhuanlan.zhihu.com/p/32756622

发表评论

登录后才能评论

评论列表(0条)