12)PHP,常量和魔术常量
义:用于存储一个不会变化也不希望变化的数据的标示符。
常量命名规则,同变量,但习惯说,常常将常量的名称使用“全大写”形式。
定义形式
- 使用define()函数定义
- 使用形式:define(“常量名”, 常量值);
- 推荐常用名使用全大写形

- 使用const语法定义
- 使用形式: const 常量名 = 常量值;
- 但const语法只能在“最顶层”的代码域中使用(不能在大括号中)
- 也即,const语法不能在函数中或条件语句中或其他表示一个“范围”的语句中使用

使用形式:
(1)直接使用名字

(2)或使用constant()函数:constant(“常量名”)

变量和常量的区别:
- 定义形式不同:
- 使用形式不同:常量无需$符号
- 可变程度不同:常量的值不可以改变,常量也不可以销毁
- 作用范围不同:常量具有超全局作用域 (函数内外都可以直接使用)
- 可用类型不同:常量只能存储标量类型:int,float,string,bool
判断常量是否存在:defined()
判断的结果为布尔值。
常用形式:if ( defined (某常量名) == false ){ .....这里可以去定义该常量;}
实际上,可以这样:
$result = defined (某常量名); //结果是true或false
使用一个未定义的常量(特殊情况):
使用一个未定义的常量会报一个错误(notice错误)——跟使用一个未定义的变量一样——当然不推荐。
但是:
php,此时会得到一个意想不到的结果:似乎该常量存在,并该常量的值就是该名字。
魔术常量:
魔术常量其实是一种值会随着一定的条件(环境)而变化的常量,形式和使用上是常量,但实际上,其值会改变。
- 比如:__DIR__(当前网页文件的所在目录),__FILE__(当前网页文件),__LINE__(当前这一行)
- 魔术常量其实类似变量,其值随着不同代码而变化,不区分大小写
- 参考手册〉语言参考〉常量〉魔术常量

结果展示:

12)PHP,常量和魔术常量的更多相关文章
- PHP面向对象——类常量,魔术常量与延期绑定
普通常量 define('常量名',常量值): 以前说过:define定义的常量,全局有效 无论是页面内,函数内,类内,都可以访问. 例: define('ACC','Deny') class ...
- PHP中的预定义常量、类常量和魔术常量的区别
PHP 向它运行的任何脚本提供了大量的预定义常量.不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了. 对于一些基本的常量是这些常量在 ...
- php常量,提前定义常量,魔术常量及基本数据类型
常量 定义: 形式一 // define("PI",常量值); define("PI",3.14); define("school",&qu ...
- PHP 预定义常量(魔术常量)
显示当前代码在多少行__LINE__ echo __LINE__; 获取当前文件绝对路径 __FILE__ echo __FILE__; //结果为: // D:\xxxx\xxxx\xxxx\ind ...
- php中的几个常用的魔术常量
在php中我们可以自定义常量,同时php中也自定义了一些好用的常量,这些常量会根据其所在的位置而自动变化. 我们称之为魔术常量.魔术常量可以大写也可以小写,是不区分大小写的 __FIL ...
- PHP的八个魔术常量
1. 什么魔术常量 预定义常量:预定义常量就是PHP内置的常量,预先定义好的 PHP有很多预定义常量,比如:PHP_VERSION(版本号).PHP_OS(操作系统). 这些普通的预定义常量在程序中的 ...
- PHP中的那些魔术常量
之前我们已经了解了一些常用的魔术方法,除了魔术方法外,PHP还提供一些魔术常量,相信大家在日常的工作中也都使用过,这里给大家做一个总结. 其实PHP还提供了很多常量但都依赖于各类扩展库,而有几个常量是 ...
- php魔术方法和魔术常量
1.__construct() 实例化对象时被调用, 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用. 2.__destruct() 当删除一 ...
- php5魔术函数、魔术常量
魔术函数 1.__construct() 实例化对象时被调用, 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用. 2.__destruct ...
随机推荐
- POJ 1320:Street Numbers
Street Numbers Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2753 Accepted: 1530 De ...
- 02-NVIDIA Jetson TX2 通过JetPack 3.1刷机完整版(踩坑版)
未经允许,不得擅自改动和转载 文 | 阿小庆 2018-1-20 本文继第一篇文章:01-NVIDIA Jetson TX2开箱上电显示界面 TX2 出厂时,已经自带了 Ubuntu 16.04 系统 ...
- PHP ~ 通过程序删除图片,同时删除数据库中的图片数据 和 图片文件
删除单张图片 <?php require_once '../../conn.php'; //连接数据库 $ID = $_GET['ID' ...
- blkid命令 获取文件系统类型、UUID
在Linux下可以使用blkid命令对查询设备上所采用文件系统类型进行查询.blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型.LABEL.UUID等信息进行查询.要使用这个命令必须 ...
- cf 223B.Two Strings
神奇(%%题解) 题意:判断B串作为A串的子序列,不是不可以把A全部覆盖掉. 这样的话就是判断是不是A[i]最右匹配B的点和最左匹配B的点相交(重合)就好.(不重合的话B自然会空出中间一段,那么肯定不 ...
- struts2模型驱动传值问题
控制台错误提示: 2020-01-08 18:34:40,292 [http-nio-8080-exec-3] [org.apache.struts2.dispatcher.Dispatcher]-[ ...
- 在Centos7下源代码安装配置Nginx
1.安装前准备开发环境安装pcre开发包:yum install -y pcre-devel 安装编译源码所需的工具和库:yum install gcc gcc-c++ ncurses-devel p ...
- Python获取桌面路径
第一种: import winreg def get_desktop(): key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Micr ...
- JavaWeb之监听器
1. 介绍 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通java程 ...
- Java 跨系统开发隐患(一)
换行符 主流系统换行符如下: Windows : \r\n Linux : \n Unix : \r 为了保证代码可以跨系统开发或使用,建议使用换行符时用下列语句获取: System.getPrope ...