define('name', 'value') 自定义全局常量,默认大小写敏感
const 定义类常量, 常量明前不用$, 一般使用大写字母
定义全局常量
define('CH', '传说');
定义类常量
class ConstTest{
const VERSION = '1.0'
function getConstTest(){
echo 'self::VERSION is :' . self::VERSION; //这里不使用$符号
}
}
Ps:
- 一般尽量不使用define的原因:
1.1 define 定义后的常量不能再修改 或 再次赋值,会报notice错误
1.2 判断是否定义全局常量的方法是: defined('常量名') ,大小写注意,不能用isset()判断
1.3 执行效率低,系统会从整个执行流程中查找该全局常量
类常量和类静态变量
类属性中有:类常量,类静态变量,公有、私有、受保护变量
class Test{
const CONSTVAR= 'constvar'; //类常量
static $static_var= 'staticvar'; //类静态变量
function getStaticVar(){
return self :: $staticVar;
}
}
echo Test::CONSTVAR; // 类常量
echo Test::$static_var; //类静态变量
Ps:
- 让同一个函数在多次调用时可以使用同一个共享变量.就是静态变量(属性)
- 类的静态属性,会在类文件加载时就初始化,属性值是可以更改的。值可以是任意变量类型(但初始化的时候. 只能是简单数据类型, 数组)
- 类常量,一旦定义了就无法变更值。值只能是简单的数据类型
Link:
参考和整理自以下链接:
1.http://www.jb51.net/article/55089.htm
2.http://huangqiqing123.iteye.com/blog/1921428