zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    22.Collections排序
    21.Collections常用方法的使用
    20.ArrayList获取并打印新闻标题
    19. Set接口的一般用法
    JS脚本显示当前日期+星期几[转]
    java流下载
    技术书籍分类[转]
    Javascript 继承 call与prototype
    SpringMVC访问静态资源[转]
    获取调用者Class和method、反射获取get方法、获取注解信息
  • 原文地址:https://www.cnblogs.com/gaoBlog/p/10341538.html
Copyright © 2011-2022 走看看