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拥有相同的值时,它们只引用常量池中的同一 ...
随机推荐
- [UE4]使用UnrealVS扩展快速编译C++代码
一.如果UE4 编辑器已经打开,则VS中的重新生成项目将不能使用,一定要关了UE4 编辑器才可以.一般不是有VS自身的编译UE4的C++代码 二.epic提供了UnrealVS扩展,可以快速编译C++ ...
- Oracle安装完成后如何创建表空间及用户
1.select file_Name from dba_data_files;(查询表空间) 2.create tablespace QUAN datafile '/app/ADMINISTRATOR ...
- Python函数式编程-高阶函数、匿名函数、装饰器、偏函数
- python类的全面介绍
转载:全面介绍python面向对象的编程——类的基础 转载:类的实例方法.静态方法.类方法的区别
- sas 经验小结(1)
1.重要的事情说三遍:在SAS中,对数据集操作要在OPTIONS中使用Compress=yes 能有效的降低文件的大小. 在SAS运行LOG中,可以看如下提示: NOTE: 压缩的数据集 T.PHON ...
- 基于HAProxy+Keepalived高可用负载均衡web服务的搭建
一 原理简介 1.HAProxyHAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web ...
- Vue3.0项目快速搭建
安装安装vue-cli npm install -g @vue/cli # 或者 yarn global add @vue/cli 创建项目 vue create hello-world 至此项目搭建 ...
- 「HNOI2015」开店(树链剖分, 主席树)
/* 考虑将所求的值拆分 记每个点到根的路径长度为dis_i, 那么我们要求的就是\sum_{i = l} ^ r dis_i + dis[u] * (r - l + 1) - 2\sum_{i = ...
- npm降低版本(降级)
博主现在的npm版本是5.8.0 想要还原到原来的3.8.6,执行以下命令: npm install npm@3.8.6 -g
- django之models模块使用
定义模型 将数据库表定义成类,集成models.Model from django.db import models # Create your models here. class Author(m ...