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 相关文章推荐
用Zend Encode编写开发PHP程序
Oct 09 PHP
php中ob(Output Buffer 输出缓冲)函数使用方法
Jul 21 PHP
php下封装较好的数字分页方法
Nov 23 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
Aug 02 PHP
PHP加密函数 Javascript/Js 解密函数
Sep 23 PHP
ThinkPHP实现支付宝接口功能实例
Dec 02 PHP
php操作memcache缓存方法分享
Jun 03 PHP
PHP实现连接设备、通讯和发送命令的方法
Oct 13 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
Feb 07 PHP
详解Yii2高级版引入bootstrap.js的一个办法
Mar 21 PHP
PHP使用file_get_contents发送http请求功能简单示例
Apr 29 PHP
php两点地理坐标距离的计算方法
Dec 29 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
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
php抽象类用法实例分析
2015/07/07 PHP
PHP开发中AJAX技术的简单应用
2015/12/11 PHP
PHP读取word文档的方法分析【基于COM组件】
2017/08/01 PHP
Javascript调用XML制作连动下拉列表框
2006/06/25 Javascript
tagName的使用,留一笔
2006/06/26 Javascript
详解new function(){}和function(){}() 区别分析
2008/03/22 Javascript
JavaScript学习笔记(十)
2010/01/17 Javascript
解决jquery1.9不支持browser对象的问题
2013/11/13 Javascript
浅谈document.write()输出样式
2015/05/07 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
JavaScript基础之AJAX简单的小demo
2017/01/29 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
JS数组中对象去重操作示例
2019/06/04 Javascript
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
layui实现根据table数据判断按钮显示情况的方法
2019/09/26 Javascript
python根据出生日期获得年龄的方法
2015/03/31 Python
详解python进行mp3格式判断
2016/12/23 Python
快速实现基于Python的微信聊天机器人示例代码
2017/03/03 Python
Python实现爬取需要登录的网站完整示例
2017/08/19 Python
Python线性回归实战分析
2018/02/01 Python
使用python实现http及ftp服务进行数据传输的方法
2018/10/26 Python
浅析Windows 嵌入python解释器的过程
2019/07/26 Python
tensorflow自定义激活函数实例
2020/02/04 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
html5指南-5.使用web storage存储键值对的数据
2013/01/07 HTML / CSS
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
Glamest意大利:女性在线奢侈品零售店
2019/04/28 全球购物
GafasWorld西班牙:购买太阳镜、眼镜和隐形眼镜
2019/09/08 全球购物
Skyscanner香港:机票比价, 平机票和廉价航空机票预订
2020/02/07 全球购物
《邮票齿孔的故事》教学反思
2014/02/22 职场文书
大学新生军训感言
2014/02/25 职场文书
员工工作表现自我评价
2015/03/06 职场文书
现场施工员岗位职责
2015/04/11 职场文书
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL