## 常量
* 用define和const定义,定以后不能再改变,不能unset
* 常量名规范:用大写,单词之间用下划线
* 不变的值,常用的值都可以定义为常量
* define不能用在类里面定义类常量,const可以在类中定义一个类常量。类里面的函数可以随便用
* 常量可以用于阻止文件直接调用
~~~
//放在文件最前面,并提示错误
if(!define(DEDEINC)) exit('不能直接访问我');
~~~
~~~
define('TAX_RATE',0.08);
const MYPI=3.1456;
$tax=10000*TAX_RATE;
~~~
![](https://box.kancloud.cn/7bb1b9bf145d1cf8b5fe9bd2a5be5e8f_265x220.png)
### 预定义常量和魔术常量
1. 预定义常量
PHP_VERSION php版本
常量在手册附录,扩展库列表,保留字列表里面
2. 魔术常量--根据环境而自动变化的常量
在手册 ,语言参考,常量里面
~~~
__LINE__ 当前行数
__FILE__ 当前文件的完整路径
__DIR__ 当前目录
__FUNCTION__ 返回函数定义的名字
_CLASS__ 本类的名字
__TRAIT
__METHOD
__NAMESPACE__
~~~
~~~
function hello(){
echo __FUNCTION__;
}
hello();
~~~
### 函数名可变性
变量名,函数名,常量名可以变化
~~~
$b='abcdfef';
$a='b';
echo $$a;
~~~
~~~
function box(){
echo '111';
}
$a='box';
$a();
~~~
~~~
define('TAX',0.8);
$a='TAX';
echo constant($a);
~~~
**知识点:**
有header()后面一定要带一个exit;