常量
常量应用场景
- 网站开发中,需要一些全局性的值,如网站的根目录路径,希望设置后在开发中使用,而且不允许其他程序员修改
- 一些基本的数据,是固定的,轻易不能修改,如,税率
定义常量
- const可以定义类常量,define不能,在类方法中定义的常量不叫类常量是普通常量,普通常量两种方式都可
- 常量定义后不能修改,也不能销毁
- 定义常量后,该常量在页面任意处都可以访问 类似超级全局变量
- 常量前面没有符号
$
,一般大写,且必须是一个定值
define("PI", 3.14);
echo PI, "<br>"; // 常量前面不加$ 大写
const TAX_RATE = 0.08;
echo TAX_RATE;
function test(){
// 常量在页面任意处都可以访问
echo TAX_RATE;
}
test(); // 0.08
检测常量是否定义
- is_set( ) 是检测变量是否存在
- defined 检查某个名称的常量是否存在
if (!defined("PI")){
define("PI", 3.14);
}
defined("TAX_RATE") || define("TAX_RATE",0.08);
var_dump(PI,TAX_RATE); // float 3.14 float 0.08
魔术常量
魔术常量总结
- 八个魔术常量它们的值随着它们在代码中的位置改变而改变,无法手动修改他的值,所以叫魔术常量
- 魔术常量可以写在任何位置,在页面任意处都可以访问
__FILE__返回文件当前的目录(包含文件名) 绝对路径
在框架开发或时网站的初始化脚本中,用来计算网站的根目录
echo '当前运行的是',__FILE__,'文件','<br>'; // 当前运行的是F:\wamp\www\PHP\面向对象\测试1.php文件
__DIR__返回文件当前的目录(不包含文件名) 绝对路径
echo '当前目录',__DIR__,'<br>'; // 当前目录F:\wamp\www\PHP\面向对象
__LINE__返回文件当前的行号
在框架中,可以用来在debug时,记录错误信息
echo 'hi~ 我在第',__LINE__,'行','<br>'; // hi~ 我在第60行
__CLASS__返回当前的类名 ; __METHOD__返回当前的方法名
class Human{
public function test(){
echo '你正在运行',__CLASS__,'下的',__METHOD__,'方法';
}
}
$a = new Human();
$a->test(); // 你正在运行Human下的Human::test方法