常量
常量和变量类似都是用来存储数据,但是常量定义之后不会改变也不能被改变
常量是作用于整个脚本文件的。不管是函数内还是函数外都可以通过常量名来获取常量值。
常量名以字符或者下划线开头,不需要像变量那样前面带个$符号标示,常量名虽然可以用小写,但是这不符合行业规则,所以都是用大写。
可以用函数defined来判断一个常量是否存在 defined(常量名)
怎么定义并使用常量呢
PHP常量的定义方式有两种
- define函数 define(常量名,常量值,对大小写是否敏感)
第3个参数默认值为false,就是对大小写敏感
define('TECHOO','tehoo的博客');
echo techoo;
这样就不能正常输出
下面我们把第3个参数改成true
define('TECHOO','tehoo的博客',true);
echo techoo;
输出结果
但是一般不建议改第3个参数。
2 const用法 const 常量名 = 常量值; 常量名不带$,而且也应该遵循常量名大写原则
.const 是一种语言结构 所以编译比define快
define 和 const 的区别
- define是函数,const是语言结构
- const可以用于类的常量定义,而define不能
- const定义的常量大小写敏感,而define可通过第三个参数(为TRUE表示大小写不敏感)来指定大小写是否敏感
- const是在编译时定义,因此必须处于最顶端的作用区域,不能在函数,循环及if条件中定义;而define是函数,也就是能调用函数的地方都可以使用
PHP中常用的预定义常量(魔法常量)
为啥叫魔法常量呢?我猜测可能是因为常量本来应该是一个不变的值。但是这些预定义常量在不同的脚本的值不相同,所以就叫魔法常量了。
- __FILE__其值为文件的完整路径及其文件名,如果用在被包含文件中,则返回被包含的文件名。
- __LINE__其值为所在的文件行号
- __DIR__其值为文件所在的目录,它等价于 dirname(FILE),如果用在被包括文件中,则返回被包括的文件所在的目录。
- __FUNCTION__其值所在函数的函数名
- __CLASS__其值为所在类的类名
- __METHOD__其值为类的方法名
- __NAMESPACE__其值为当前名命空间的名称