博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php分享三十三:常量
阅读量:5012 次
发布时间:2019-06-12

本文共 2155 字,大约阅读时间需要 7 分钟。

一:常量定义

1:在脚本执行期间该值不能改变(除了所谓的,它们其实不是常量)

2:常量默认为大小写敏感

3:命名规则:用正则表达式是这样表达的:[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

在这里,字母指的是 a-z,A-Z,以及从 127 到 255(0x7f-0xff)的 ASCII 字符。

4:

如果使用了一个未定义的常量,PHP 假定想要的是该常量本身的名字,如同用字符串调用它一样(CONSTANT 对应 "CONSTANT")。此时将发出一个  级的错误。参见手册中为什么  是错误的(除非事先用  bar 定义为一个常量)。如果只想检查是否定义了某常量,用  函数。

settings.php
test.php

 If for some reason settings.php doesn't get included and the DEBUG constant is not set, PHP will STILL print the sensitive data. The solution is to evaluate it. Like so:

settings.php
test.php

5:heredoc中的常量不能被解释,如果需要调用,可以把常量封装到一个函数里,返回调用

There is a way to access a constant in heredoc.Here is the example:

 

6:It is perfectly valid to use a built-in PHP keyword as a constant name - as long as you the constant() function to retrieve it later:

define('echo', 'My constant value');echo constant('echo'); // outputs 'My constant value'

7:动态的常量可以用返回

8:常量和(全局)变量在不同的名字空间中。这意味着例如 TRUE 和 $TRUE 是不同的。

 

二:魔术常量(8个)

__FUNCTION__; __FILE__; __LINE__; __NAMESPACE__; __TRAIT__; __CLASS__; __METHOD__; __DIR__;

二:类常量const

1:接口(interface)中也可以定义常量

2:从php5.6开始常量可以用标量表单式了

3:类常量可以被覆盖

it's possible to declare constant in base class, and override it in child, and access to correct value of the const from the static method is possible by 'get_called_class' method:

abstract class dbObject{        const TABLE_NAME='undefined';        public static function GetAll()    {        $c = get_called_class();        return "SELECT * FROM `".$c::TABLE_NAME."`";    }    }class dbPerson extends dbObject{    const TABLE_NAME='persons';}class dbAdmin extends dbPerson{    const TABLE_NAME='admins';}echo dbPerson::GetAll()."
";//output: "SELECT * FROM `persons`"echo dbAdmin::GetAll()."
";//output: "SELECT * FROM `admins`"

 

二:const和define定义常量的区别

1:和使用  来定义常量相反的是,使用 const 关键字定义常量必须处于最顶端的作用区域,因为用此方法是在编译时定义的。这就意味着不能在函数内,循环内以及 if 语句之内用 const 来定义常量。

2:类常量中不能有变量,define中可以用

The const keyword will not allow anything that may have to be "processed":$color = "red";const RED = "This is the color $color"; //Doesn't workdefine(strtoupper($color), "This is the color $color") // Works fine

 

转载于:https://www.cnblogs.com/Alight/p/5278390.html

你可能感兴趣的文章
663 如何做“低端”产品?(如何把低端做得高端 - 认同感)
查看>>
JDBC 第九课 —— 初次接触 JUnit
查看>>
Windows核心编程:第10章 同步设备IO与异步设备IO
查看>>
浏览器加载、解析、渲染的过程
查看>>
开放api接口签名验证
查看>>
sed 常用操作纪实
查看>>
C++复习:对C的拓展
查看>>
校外实习报告(九)
查看>>
android之android.intent.category.DEFAULT的用途和使用
查看>>
CAGradientLayer 透明渐变注意地方(原创)
查看>>
织梦DEDE多选项筛选_联动筛选功能的实现_二次开发
查看>>
iOS关于RunLoop和Timer
查看>>
SQL处理层次型数据的策略对比:Adjacency list vs. nested sets: MySQL【转载】
查看>>
已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中。
查看>>
MySQL的随机数函数rand()的使用技巧
查看>>
thymeleaf+bootstrap,onclick传参实现模态框中遇到的错误
查看>>
python字符串实战
查看>>
wyh的物品(二分)
查看>>
12: xlrd 处理Excel文件
查看>>
综合练习:词频统计
查看>>