豁然高

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

PHP常量总结

概念

常量我们可以理解为值不变的量。常量只要被定义了,在程序脚本的其他任何地方都不能改变

因为常量被定义后不能被修改,所以即使重定义常量的值,常量的值也是第一次定义常量时的值

常量不管在哪里被定义,都具有超全局作用域

常量的定义

常量可以通过define()函数const关键字两种形式定义

个人建议,类常量以外的常量定义尽可能使用define

define ( string $name , mixed $value [, bool $case_insensitive = false ] ) 
  case_insensitive可选。默认是false,大小写敏感的。如果设置为 TRUE,该常量则大小写不敏感。
const NAME = VALUE
define (ABC, "1111") ;    //name可以不加引号,但是不建议这样写
define ("
ABC", "1111") ; //define定义常量时推荐常量名带引号
const DEF = "2222"; //const定义常量时,常量名不能带引号

 

define()函数和const的区别

1.在php5.3.0以前,const只用于在类内部定义类常量,而无法在类外部定义常量。

  在php5.3.0以后,const可以在类外部定义常量,但不能在函数,条件语句,循环语句等的{}语句块中定义常量

2.使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数。另外const在编译时要比define快很多。

3.define可以在在函数,条件语句,循环语句等的{}语句块中定义常量,const不可以

4.const可以定义类常量,而define不可以

5.define可以动态设置常量名,const不可以

6.define常量值可以采用任何表达式,而const只能接受静态的标量

7.const定义的常量大小写敏感,而define可以通过第三个参数(为true表示大小写不敏感)来指定大小写是否敏感。

 

 

 

复制代码
<?php
$hostname = php_uname('n');
//类外正常定义
const C1 = 1;
define("C2", 2);
//{}语句块内不能使用const,可以使用define
if (true) {
    const C3 = 1;     //错误
    define("C4", 2);
}
for ($i=0; $i<2;$i++) {
    const C5= 1;    //错误
    define("C6", 2);
}

function test () {
    const C7= 1;    //错误
    define("C8", 2);
}

//define可以动态使用常量名,const不可以
//define常量值可以采用任何表达式,而const只能接受静态的标量
const  FOO = 'BAR';
for ($i = 0; $i < 32; ++$i) {
    define('BIT_' . $i, 1 << $i);
    define('HOST_NAME' . $i, 'HOST' .$i);
}
//const可以定义类常量
class Collect_notification {
    const C9= 1;       
    define("C10", 2);    //错误。define不能定义类常量

    function main(){
        const C11= 1;    //错误。{}语句块内不能使用const
        define("C12", 2);
    }
}
复制代码

 

常量的使用

有两种形式

  1,直接使用名字  

  2,使用constant()函数:constant(“常量名”)函数可以动态地输出不同的常量,在使用上要灵活方便很多

复制代码
const  FOO = 'BAR';
for ($i = 0; $i < 2; ++$i) {
    define('HOST_NAME' . $i, 'HOST' .$i);
}
echo HOST_NAME0;   //直接使用常量名
echo HOST_NAME1;
for ($i = 0; $i < 2; ++$i) {
    echo constant('HOST_NAME'.$i); //constant()函数动态使用常量 
}
复制代码

 

 常量与变量的区别

复制代码
定义形式不同 (常量使用define或者const定义);

使用形式不同(常量不需要 $ 符号);

可变程度不同(常量的值不可改变或者销毁);

作用范围不同(常量具有超全局作用域(函数内外都可直接使用));

可用类型不同(常量只能存储标量类型intfloatstringbool);
复制代码

 

posted on   豁然高  阅读(210)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示