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代码
Dec 06 PHP
php 验证码实例代码
Jun 01 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
Oct 25 PHP
Ajax+PHP快速上手及简单应用说明
Jul 24 PHP
php阻止页面后退的方法分享
Feb 17 PHP
PHP中的插件机制原理和实例
Jul 08 PHP
PHP常用设计模式之委托设计模式
Feb 13 PHP
php获取远程图片并下载保存到本地的方法分析
Oct 08 PHP
PHP实现的各类hash算法长度及性能测试实例
Aug 27 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
PHP实现的函数重载功能示例
Aug 03 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 第三节 变量介绍
2012/04/28 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
PHP技术开发微信公众平台
2015/07/22 PHP
PHP explode()函数用法讲解
2019/02/15 PHP
JQUBar 基于JQUERY的柱状图插件
2010/11/23 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
Javascript中的delete操作符详细介绍
2014/06/06 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
javascript html5移动端轻松实现文件上传
2020/03/27 Javascript
JS重载实现方法分析
2016/12/16 Javascript
js中DOM事件绑定分析
2018/03/18 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
Python中的Matplotlib模块入门教程
2015/04/15 Python
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
python实现的系统实用log类实例
2015/06/30 Python
Python下的Softmax回归函数的实现方法(推荐)
2017/01/26 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
Python实现简单的HttpServer服务器示例
2017/09/25 Python
pandas值替换方法
2018/07/10 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
python中使用you-get库批量在线下载bilibili视频的教程
2020/03/10 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
Html5 postMessage实现跨域消息传递
2016/03/11 HTML / CSS
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
致裁判员加油稿
2014/02/08 职场文书
残疾人小组计划书
2014/04/27 职场文书
人力资源管理系自荐信
2014/05/31 职场文书
医生学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
小学教师个人总结
2015/02/05 职场文书
vue 给数组添加新对象并赋值
2022/04/20 Vue.js