定义常量的语法
define('常量名','常量值');
define('HEIGHT',8846);


常量的引用
echo 常量名;  // 不用再加$符号
echo HEIGHT,'<br />';

 

常量的特点

1、一旦定义,值不能被修改,不能重新赋值
HEIGHT = 8888;  // 直接语法错误


有同学想:既然常量不能用等号重新赋值,
那么能否用define,再定义一次,
并且,定义一个新值


2、 一旦定义,也不能重复定义

define('HEIGHT',8888);

刚才,虽然重新定义提示了一下

Notice:Constant HEIGHT already defined in ...... line XX
但是,常量值并不会改变。

3、重要特点,即"全局有效性",说白了,就是页面任意一处都能访问到.
这个特点需要结合函数才能体现

关于常量赋值

变量的值,有8种类型;常量的值可以有整型、浮点型、字符串型、布尔型、NULL五种(标量)。

其他三种:array,object,resource,都不可以赋给常量.

变量的作用域为函数体内,常量则作用于整个页面。

 

// 常量的命名规则

// 常量的命名规则和变量一样


define('hei',8846);
echo hei;

// 但是,习惯上大写.(语法上允许小写)

// 常量 也区分大小写
echo HEI; // 先找HEI常量的值,没找到,当成字符串来输出了.


如果引用了一个未曾定义的常量,因为没定义该常量,自然找不到值,最终会把常量名当成字符串来输出.

 

常量的检测

 我们知道,一个变量是否已声明,可以检测到,用isset即可检测

 

开发时,我想知道,某个常量有没有定义,如果还没定义,我就去定义.

怎么样判断一个常量 是否定义过呢?
用defined('常量名'); 即可检测
如果常量已定义,返回true
如果常量没定义,返回false

 

动态常量
动态常量,需要用constant函数来实现
contant($var),则会把$var 的值,当成一个常量的名,并解析出常量的值为.
echo constant($who); // $who的值解析出来,例DA constant函数,再去解析DA对应的常量的值.


开发中,什么时间适合用常量
比如:网站的根目录,D:/www/
网站配置文件,不希望被更改,也可以写成常量。