PHP常量总结
概念
常量我们可以理解为值不变的量。常量只要被定义了,在程序脚本的其他任何地方都不能改变。
因为常量被定义后不能被修改,所以即使重定义常量的值,常量的值也是第一次定义常量时的值
常量不管在哪里被定义,都具有超全局作用域
常量的定义
常量可以通过define()函数和const关键字两种形式定义
个人建议,类常量以外的常量定义尽可能使用define
define ( string $name , mixed $value [, bool $case_insensitive = false ] )
case_insensitive可选。
默认是false,大小写敏感的。如果设置为TRUE
,该常量则大小写不敏感。
const NAME = VALUE
define (ABC, "") ; //name可以不加引号,但是不建议这样写
define ("ABC", "1111") ; //define定义常量时推荐常量名带引号
const DEF = ""; //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 = ;
define("C2", );
//{}语句块内不能使用const,可以使用define
if (true) {
const C3 = ; //错误
define("C4", );
}
for ($i=; $i<;$i++) {
const C5= ; //错误
define("C6", );
} function test () {
const C7= ; //错误
define("C8", );
} //define可以动态使用常量名,const不可以
//define常量值可以采用任何表达式,而const只能接受静态的标量
const FOO = 'BAR';
for ($i = ; $i < ; ++$i) {
define('BIT_' . $i, << $i);
define('HOST_NAME' . $i, 'HOST' .$i);
}
//const可以定义类常量
class Collect_notification {
const C9= ;
define("C10", ); //错误。define不能定义类常量 function main(){
const C11= ; //错误。{}语句块内不能使用const
define("C12", );
}
}
常量的使用
有两种形式
1,直接使用名字
2,使用constant()函数:constant(“常量名”)函数可以动态地输出不同的常量,在使用上要灵活方便很多
const FOO = 'BAR';
for ($i = ; $i < ; ++$i) {
define('HOST_NAME' . $i, 'HOST' .$i);
}
echo HOST_NAME0; //直接使用常量名
echo HOST_NAME1;
for ($i = ; $i < ; ++$i) {
echo constant('HOST_NAME'.$i); //constant()函数动态使用常量
}
常量与变量的区别
定义形式不同 (常量使用define或者const定义); 使用形式不同(常量不需要 $ 符号); 可变程度不同(常量的值不可改变或者销毁); 作用范围不同(常量具有超全局作用域(函数内外都可直接使用)); 可用类型不同(常量只能存储标量类型:int,float,string,bool);
PHP常量总结的更多相关文章
- C++11特性——变量部分(using类型别名、constexpr常量表达式、auto类型推断、nullptr空指针等)
#include <iostream> using namespace std; int main() { using cullptr = const unsigned long long ...
- JavaScript 常量定义
相信同学们在看见这个标题的时候就一脸懵逼了,什么?JS能常量定义?别逗我好吗?确切的说,JS当中确实没有常量(ES6中好像有了常量定义的关键字),但是深入一下我们可以发现JS很多不为人知的性质,好好利 ...
- ES6之变量常量字符串数值
ECMAScript 6 是 JavaScript 语言的最新一代标准,当前标准已于 2015 年 6 月正式发布,故又称 ECMAScript 2015. ES6对数据类型进行了一些扩展 在js中使 ...
- Java常量的应用
所谓常量,我们可以理解为是一种特殊的变量,它的值被设定后,在程序运行过程中不允许改变. 语法:final 常量名 = 值; 使用fianl关键字 常量名 值 final String a1 = &qu ...
- 原创 C++之常量(二)
4常量的内存分配 4.1应用程序的内存结构 一个由C++编译的应用程序,占用的内存可以划分为如下几个部分: 栈(stack).由编译器自动分配释放.存放函数参数和函数里的局部变量(又称自动变量).其操 ...
- 原创 C++之常量(一)
1概述 一个C++程序就是一系列数据与操作的集合.当一个C++程序开始运行的时候,与该程序相关的数据就会被加载到内存中.当数据与内存发生关联的时候,这些数据就会具有如下的特性: 数据在内存中的地址.这 ...
- 1.2 - C#语言习惯 - 用运行时常量readonly而不是编译期常量const
C#中有两种类型的常量:编译期常量和运行时常量.二者有着截然不同的行为,使用不当将会带来性能上或正确性上的问题. 这两个问题最好都不要发生,不过若难以同时避免的话,那么一个略微慢一些但能保证正确的程序 ...
- swift 简介和常量与变量 --- swift 入门
一.思维导图 二. 代码 //创建UIView 和按钮 let views = UIView(frame: CGRect(x:20, y: 20, width: 100, height: 100))/ ...
- java为什么非静态内部类中不能有static修饰的属性,但却可以有常量?
如:public class InnerClassDemo{int x;class A{static int a = 0;//这样写是不合法的.static final int b=0;//这样写是合 ...
- String字符串针对常量池的优化
String对象是java语言中重要的数据类型,但是不是基本数据类型.相对于c语言的char java做了一些封装和延伸. 针对常量池的优化:当两个String拥有相同的值时,它们只引用常量池中的同一 ...
随机推荐
- Windows配置多个git用户
Window配置多个Git账户,SSH连接GitHub.GitLab 最新版本GIt配置对应多个Git仓库(不需要添加多个用户名和邮箱): 在本地git上添加一个用户名和邮箱,生成一对公钥和私钥,把公 ...
- C#连接数据库最基本操作之sql语句 DML
C#连接数据库最基本操作之sql语句 DML //1 连接字符串 string connectionString = "server=127.0.0.1;integrated securit ...
- Java GC2
虚拟机中共划分为3个代:年轻代,老年代,持久代:其中持久代主要存放Java类的类信息,与垃圾收集要收集的Java对象关系不大,年轻代和老年代的划分是对垃圾收集影响较大的 年轻代: HotSpot JV ...
- C# Microsoft.Office不存在空间名称Interop和Excel
在实际开发过程中,我们经常会对Excel表进行操作.相信大家都都已经很熟悉C#操作Excel的步骤:添加引用->COM->Microsoft Office Excel 11 Object. ...
- java synchronized 同步详解
记下来,很重要. Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchron ...
- python数据类型总结
按存值个数区分 标量/原子类型 数字,字符串 容器类型 列表,元组,字典 按可变不可变区分 可变 列表,字典 不可变 数字,字符串,元组 按访问顺序区分 直接访问 数字 顺序访问(序列类型) 字符串, ...
- 并发编程:GIL,线程池,进程池,阻塞,非阻塞,同步,异步
一 GIL(global interpreter lock) GIL中文叫全局解释器锁,我们执行一个文件会产生一个进程,那么我们知道进程不是真正的执行单位,而是资源单位,所以进程中放有解释器(cpy ...
- HDU1847 Good Luck in CET-4 Everybody 博弈 SG函数
题意:给定n张牌,两个人轮流摸牌,每次摸牌张数为2的幂次,问先手胜还是后手胜 n≤1000 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1847 # ...
- FreeMarker内建函数
内建函数 内建函数语法格式: 变量+?+函数名称 获取集合大小 我们通常要得到某个集合的大小,如下图: 我们使用size函数来实现,代码如下: 共 ${goodsList?size} 条记录 转换 ...
- redis 主从配置和集群配置
主从配置 | 集群配置 redis主从 主从配置原因: 1.到达读写分离,读的操作和写操作比例10 : 1读数据频繁,写数据次数少,这样可以配置1个master数据库用来写数据,配置多个slave从 ...