酷站(www.ku0.com)-致力于为互联网从业者提供动力!

热门关键词:  企业  as  baidu  c4rp3nt3r  美女
酷站

【云小站】新老客都返现+现金红包+瓜分60万奖池
酷站

php

旗下栏目: php js asp Flex Ajax JSP jquery asp.net C语言 java 正则表达式 微信小程序 Android IOS

PHP常量define和const的区别详解

来源:互联网搜集 作者:秩名 人气: 发布时间:2019-05-18
本篇文章主要介绍了PHP常量define和const的区别详解,对大家的学习或者工作具有一定的参考学习价值,感兴趣的小伙伴们可以参考一下,也感谢大家对酷站(ku0.com)的支持。

本篇文章介绍PHP常量define和const的区别详解。

常量是一个简单的标识符。在脚本执行期间该值不能改变(除了所谓的魔术常量,他们其实不是常量)。常量默认大小写敏感。通常常量标识符总是大写的。

可以用define()函数来定义常量。在php5.3.0以后,可以使用const关键字在类定义的外部定义常量,先前版本const关键字只能在类(class)中使用。一个常量一旦被定义,就不能再改变或取消定义。

常量只能包含标量数据(boolean、integer、float和string)。可以定义resource常量,但应尽量避免,因为会造成不可预料的结果。

可以简单的通过指定其名字来获得常量的值,与变量不同,不应该在常量的前面加上$符号。如果常量名是动态的,也可以用函数constant()来获取常量的值。用get_defined_contstants()可以获得所有已定义的常量列表。

常量和变量有如下不同:

1、常量前面没有美元符号($)
2、常量只能通过define()函数定义,而不能通过赋值语句
3、常量可以不用理会变量的作用域在任何地方定义和访问
4、常量一旦定义就不能重新定义或取消定义
5、常量的值只能是标量

 
<?php
// 以下代码在 PHP 5.3.0 后可以正常工作
const USERNAME = 'zhouguowei';
echo USERNAME;
echo constant("USERNAME");
 
const ZHOUUSERNAME = 'zhouguowei2222222222';
 
define('MYUSERNAME','zhouguowei1111111');
echo "<pre>";
print_r(get_defined_constants());
?>

问:在php中定义常量时,const和define的区别?

答:使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数。另外const在编译时要比define快很多。

1、const用于类成员变量的定义,一经定义,不可修改。Define不可以用于类成员变量的定义,可用于全局常量。
2、Const可在类中使用,define不能
3、Const不能再条件语句中定义常量
 
 
<?php
if (...){
const FOO = 'BAR'; // 无效的invalid
}
if (...) {
define('FOO', 'BAR'); // 有效的valid
}
?>

4、const采用普通的常量名称,define可以采用表达式作为名称

 
<?php
const FOO = 'BAR';
for ($i = 0; $i < 32; ++$i) {
define('BIT_' . $i, 1 << $i);
}
?>

5、const只能接受静态的标量,而define可以采用任何表达式

 
<?php
const BIT_5 = 1 << 5; // 无效的invalid
define('BIT_5', 1 << 5); // 有效的valid
?>

6、const定义的常量时大小写敏感,而define可以通过第三个参数(为true表示大小写不敏感)来指定大小写是否敏感。

 
<?php
define('FOO', 'BAR', true);
echo FOO; // BAR
echo foo; // BAR
?>
 


版权声明:本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 959677720#qq.cn(#换@) 举报,一经查实,本站将立刻删除。
原文链接:https://segmentfault.com/a/1190000019217299

相关文章

  • php-7.3.6编译安装过程介绍

    php-7.3.6编译安装过程介绍

    1.、安装编译工具及库文件(使用yum命令安装) yum install -y apr* autoconf automake bison bzip2 bzip2* cloog-ppl cpp curl curl-devel fontconfig fontconfig-devel freetype freetype* freetype-devel gcc gcc-c++ gtk+-devel gd g......
    02-12
  • ThinkPHP5&5.1实现验证码的生成,使用及点击刷新

    ThinkPHP5&5.1实现验证码的生成,使用及点击刷新

    验证码现在是用户登录、支付等很多环节的必备元素,ThinkPHP55.1给我们提供了验证码的生成方式,也是非常的简单,在这里写一个完整的验证码验证的使用方法,供大家参考。 前台用户在登录时候需要验证码验证才能登录。首先使用Composer安......
    02-09
  • laravel邮件发送的代码教程

    laravel邮件发送的代码教程

    laravel自带SwiftMailer库,集成了多种邮件API,可以很方便的实现邮件的发送。在本教程中使用到的是SMTP(Simple Message Transfer Protocol)简单邮件传输协议,通常理解为邮件发送服务器。 以126邮箱为例 使用126邮箱的话,需要开启POP......
    01-31
  • Laravel框架自定义分页样式操作代码

    Laravel框架自定义分页样式操作代码

    操作步骤如下: (1) 对应public/css/paging.css 文件建立分页样式. (2) 控制器查出分页数据使用 paginate函数进行分页处理.(禁止使用group by处理查询). (3) 对应视图引入分页样式. 例如: paging.css 样式文件代码(复制即可用,实际操作过)......
    01-26
  • 实现Laravel jwt多表(多用户端)验证隔离教程

    实现Laravel jwt多表(多用户端)验证隔离教程

    Tips: tymon/jwt-auth 作者已通过增加 prv 字段修复这一问题#1167,但是如果你是用 dingo api + jwt 的话,该问题依然存在。# JWT 多表验证隔离 为什么要做隔离 当同一个 laravel 项目有多端(移动端、管理端......)都需要使用 jwt 做用......
    12-19
  • ThinkPHP类似AOP思想的参数验证的实现代码

    ThinkPHP类似AOP思想的参数验证的实现代码

    思路讲解:不管是在开发 API 还是做后台项目的时候,后端永远不要相信前端传输的参数,通常要做的是验证参数的合法性和安全性。那么在实际项目开发的时候,怎么简便的验证参数呢。 TP 提供了好几种参数验证的方式,比如验证器,独立验证......
    12-19
  • PHP实现微信公众号验证Token的教程

    PHP实现微信公众号验证Token的教程

    缘起 很久之前做过一次公众号的开发,当时就遇到了一个验证的小坑,但是由于时间紧任务急处理完了也就没在意,可谁知最近刚刚上马一个新的公众号项目又遇到了同样的小坑,痛定思痛决定奋笔疾书留下痕迹,省的以后再次忘记了。 开始验证 ......
    12-17
  • PHP防止sql注入小技巧之sql预处理原理与实现方法介绍

    PHP防止sql注入小技巧之sql预处理原理与实现方法介绍

    我们可以把sql预处理看作是想要运行的 SQL 的一种编译过的模板,它可以使用变量参数进行定制。 我们来看下它有什么好处: 预处理语句大大减少了分析时间,只做了一次查询(虽然语句多次执行)。 绑定参数减少了服务器带宽,你只需要发送......
    12-14
  • PHP实用小技巧之调用录像的方法

    PHP实用小技巧之调用录像的方法

    主要功能 把你实际的调用操作录下来,然后在你想要的地方重新调用 和匿名函数的作用基本一样,暂存你的调用操作 一般用于链式调用, 然后实际作用于你想要操作的对象上面 好像和没说一样 使用场景 假如 laravel 项目用到了 仓库模式, 然......
    12-06
  • laravel的框架中表单请求类型和CSRF防护

    laravel的框架中表单请求类型和CSRF防护

    laravel中为我们提供了绑定不同http请求类型的函数。 Route::get(/test, function () {});Route::post(/test, function () {});Route::put(/test, function () {});Route::patch(/test, function () {});Route::delete(/test, function (......
    11-24

最新更新