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字符串截取问题
Nov 28 PHP
PHP 分页原理分析,大家可以看看
Dec 21 PHP
php中比较简单的导入phpmyadmin生成的sql文件的方法
Jun 28 PHP
PHP函数篇之掌握ord()与chr()函数应用
Dec 05 PHP
php更新mysql后获取影响的行数发生异常解决方法
Mar 28 PHP
基于php冒泡排序算法的深入理解
Jun 09 PHP
YII模块实现绑定二级域名的方法
Jul 09 PHP
php实现递归与无限分类的方法
Feb 16 PHP
[原创]smarty简单模板变量输出方法
Jul 09 PHP
php简单统计中文个数的方法
Sep 30 PHP
php微信公众平台开发(四)回复功能开发
Dec 06 PHP
浅析PHP中的 inet_pton 网络函数
Dec 16 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
免费的ip数据库淘宝IP地址库简介和PHP调用实例
2014/04/08 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
2015/09/23 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
在jquery中combobox多选的不兼容问题总结
2013/12/24 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
JavaScript中string对象
2015/06/12 Javascript
javascript原生ajax写法分享
2016/04/10 Javascript
浅谈jQuery效果函数
2016/09/16 Javascript
Javascript highcharts 饼图显示数量和百分比实例代码
2016/12/06 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
JavaScript对JSON数据进行排序和搜索
2017/07/24 Javascript
Element Input组件分析小结
2018/10/11 Javascript
每天学点Vue源码之vm.$mount挂载函数
2019/03/11 Javascript
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
js获取url页面id,也就是最后的数字文件名
2020/09/25 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
JS指定音频audio在某个时间点进行播放
2020/11/28 Javascript
[01:00:53]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Secret
2018/03/30 DOTA
python实现封装得到virustotal扫描结果
2014/10/05 Python
Python多线程和队列操作实例
2015/06/21 Python
python版飞机大战代码分享
2018/11/20 Python
ML神器:sklearn的快速使用及入门
2019/07/11 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
python通过http下载文件的方法详解
2019/07/26 Python
在django模板中实现超链接配置
2019/08/21 Python
关于python中导入文件到list的问题
2020/10/31 Python
科技工作者先进事迹
2014/08/16 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
导游词之烟台威海蓬莱
2019/11/14 职场文书
使用HTML+Css+transform实现3D导航栏的示例代码
2021/03/31 HTML / CSS
Python基础学习之奇异的GUI对话框
2021/05/27 Python
世界十大狙击步枪排行榜
2022/03/20 杂记