普通常量和类常量

普通常量:
define('常量名',常量值);
define定义的常量全局有效,
无论是页面内,还是函数内,类内都可以访问

能否定义专门在类内发挥作用的常量
专门在类内发挥作用说明:
1.作用域在类内,类似于静态属性,
2.又是常量,不可改
其实就是"不可改变的静态属性"

类常量:在类内用const声明即可,前面不用加修饰符,而其权限是public

<?php 

define('ACC','Deny');

class Human{
	const HEAD = 1;
	public static $leg = 2;

	public static function show(){
		echo ACC,'<br/>';
		echo self::HEAD,'<br/>';
		echo self::$leg,'<br/>';
	}
}

Human::show();
echo Human::HEAD;
?>

魔术常量

魔术常量:
1.无法手动修改的值,所以叫常量
2.但是值又不是随机变动的所以叫魔术

__FILE__ 返回当前文件的路径,
在框架开发或者是网站初始化脚本中,用来计算网站的根目录

__LINE__ 返回当前的行号
在框架中,可以用来debug时,记录错误信息

__CLASS__ 返回当前的类名
__METHOD__ 返回当前的方法名

<?php

echo "当前正在运行的是",__FILE__,"文件<br/>";
echo "当前在",__DIR__,'目录下<br/>';
echo "当前是",__LINE__,"行<br/>";


class Human{
	public static function t(){
		echo '你正在运行',__CLASS__,'类下的<br/>';
		echo __METHOD__,'方法';
	}
}

Human::t();