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 相关文章推荐
PHP4(windows版本)中的COM函数
Oct 09 PHP
PHP的FTP学习(四)
Oct 09 PHP
PHP OPCode缓存 APC详细介绍
Oct 12 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
May 04 PHP
PHP调用C#开发的dll类库方法
Jul 28 PHP
一个php生成16位随机数的代码(两种方法)
Sep 16 PHP
php中opendir函数用法实例
Nov 15 PHP
Laravel中使用自己编写类库的3种方法
Feb 10 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
Oct 10 PHP
CodeIgniter配置之config.php用法实例分析
Jan 19 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
Aug 07 PHP
PHP实现简易用户登录系统
Jul 10 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
超强分页类2.0发布,支持自定义风格,默认4种显示模式
2007/01/02 PHP
PHP中date()日期函数有关参数整理
2011/07/19 PHP
php中json_encode中文编码问题分析
2011/09/13 PHP
php在window iis的莫名问题的测试方法
2013/05/14 PHP
php文件夹与文件目录操作函数介绍
2013/09/09 PHP
ThinkPHP3.1之D方法实例详解
2014/06/20 PHP
php生成二维码图片方法汇总
2016/12/17 PHP
PHP获取文本框、密码域、按钮的值实例代码
2017/04/19 PHP
JavaScript更改class和id的方法
2008/10/10 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
详解JavaScript的Date对象(制作简易钟表)
2020/04/07 Javascript
onclick和onblur冲突问题的快速解决方法
2016/04/28 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
第一次记录Bootstrap table学习笔记(1)
2017/05/18 Javascript
vue用addRoutes实现动态路由的示例
2017/09/15 Javascript
JavaScript数组的5种迭代方法
2017/09/29 Javascript
基于JS实现带动画效果的流程进度条
2018/06/01 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
2020/04/29 Javascript
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
开始着手第一个Django项目
2015/07/15 Python
Python时间的精准正则匹配方法分析
2017/08/17 Python
python实现机械分词之逆向最大匹配算法代码示例
2017/12/13 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
2019/06/27 Python
如何利用python给图片添加半透明水印
2019/09/06 Python
Python 3.8正式发布,来尝鲜这些新特性吧
2019/10/15 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
比利时香水网上商店:NOTINO
2018/03/28 全球购物
PHP如何自定义函数
2016/09/16 面试题
2014年图书室工作总结
2014/12/09 职场文书
人事部:年度述职报告范文
2019/07/12 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python
python opencv将多个图放在一个窗口的实例详解
2022/02/28 Python
Python必备技巧之字符数据操作详解
2022/03/23 Python