php类常量的使用详解


Posted in PHP onJune 08, 2013

可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号。

常量的值必须是一个定值,不能是变量,类属性,数学运算的结果或函数调用。

接口(interface)中也可以定义常量。更多示例见文档中的接口部分。

自 PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字(如 self,parent 或 static)。

Example #1 定义和使用一个类常量

<?php
class MyClass
{
  const constant = 'constant value';
  function showConstant() {
    echo self::constant . "\n";
  }
}

echo MyClass::constant . "\n";

$classname = "MyClass";
echo $classname::constant . "\n"; // 自 5.3.0 起

$class = new MyClass();
$class->showConstant();

echo $class::constant."\n"; // 自 PHP 5.3.0 起
?>

Example #2 静态数据示例

<?php
class foo {
  // 自 PHP 5.3.0 起
  const bar = <<<'EOT'
bar
EOT;
}
?>

和 heredoc 不同,nowdoc 可以用在任何静态数据中。

Note:

Nowdoc 支持是在 PHP 5.3.0 新增的。

更多可以参考这篇文章:http://php.net/manual/zh/language.oop5.constants.php#language.oop5.constants

注意:不像其他的面向对象编程语言,在php中,类不能对某个属性变量使用final修饰符。
如果要声明某个属性为常量,可以使用const关键字,并且无需使用美元符号作为变量名前缀,也无需使用访问权限修饰符。常量意味着虽然可以访问该变量,但不能修改该变量的值。例如下边的代码声明了常量属性con_var:

<?php
class Foo{
 const con_var="常量属性的值不能被修改<br />";
 public function method_a(){
 echo (self::con_var);
 }
}
echo(Foo::con_var);
$myFoo=new Foo();
echo ($myFoo->method_a());
?>

常量属性不能使用对象访问,仅能使用类访问,在类本体内,可以使用“self::常量名”,在类本体外可以使用“类名::常量名”。

PHP 相关文章推荐
PHP与已存在的Java应用程序集成
Oct 09 PHP
php生成随机数或者字符串的代码
Sep 05 PHP
解析php中session的实现原理以及大网站应用应注意的问题
Jun 17 PHP
PHP COOKIE及时生效的方法介绍
Feb 14 PHP
codeigniter集成ucenter1.6双向通信的解决办法
Jun 12 PHP
WordPress自定义时间显示格式
Mar 27 PHP
PHP的Yii框架入门使用教程
Feb 15 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
Apr 01 PHP
PHP使用内置函数生成图片的方法详解
May 09 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
Mar 31 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
Oct 15 PHP
深入分析php中接口与抽象类的区别
Jun 08 #PHP
探讨PHP中this,self,parent的区别详解
Jun 08 #PHP
深入php self与$this的详解
Jun 08 #PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
Jun 07 #PHP
解析dedeCMS验证码的实现代码
Jun 07 #PHP
探讨php中header的用法详解
Jun 07 #PHP
php简单浏览目录内容的实现代码
Jun 07 #PHP
You might like
php检查是否是ajax请求的方法
2015/04/16 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
js实现的网页颜色代码表全集
2007/07/17 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
JavaScript高级程序设计 扩展--关于动态原型
2010/11/09 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
上传图片js判断图片尺寸和格式兼容IE
2014/09/01 Javascript
详细解密jsonp跨域请求
2015/04/15 Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
2016/05/05 Javascript
基于jQuery实现表格的查看修改删除
2016/08/01 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
babel的使用及安装配置教程
2018/02/22 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
深入理解JS异步编程-Promise
2019/06/03 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
[01:10]DOTA2次级职业联赛 - Fly战队宣传片
2014/12/01 DOTA
用Python的urllib库提交WEB表单
2009/02/24 Python
Python 爬虫学习笔记之单线程爬虫
2016/09/21 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
解决python3 json数据包含中文的读写问题
2018/05/10 Python
使用python模拟命令行终端的示例
2019/08/13 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
Python self用法详解
2020/11/28 Python
Net-A-Porter美国官网:全球时尚奢侈品名站
2017/02/11 全球购物
Allen Edmonds官方网站:一家美国优质男士鞋类及配饰制造商
2019/03/12 全球购物
opencv实现图像平移效果
2021/03/24 Python
财务管理专业毕业生求职信范文
2013/09/21 职场文书
小学生开学感言
2014/02/28 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
优秀班组申报材料
2014/12/25 职场文书
2015年清明节演讲稿范文
2015/03/17 职场文书
教师节作文之小学四年级
2019/09/03 职场文书
MySQL update set 和 and的区别
2021/05/08 MySQL
Python如何加载模型并查看网络
2022/07/15 Python
Go中使用gjson来操作JSON数据的实现
2022/08/14 Golang