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 相关文章推荐
基于mysql的论坛(5)
Oct 09 PHP
第六章 php目录与文件操作
Dec 30 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
Apr 10 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
Sep 10 PHP
php读取mssql的ntext字段返回值为空的解决方法
Dec 30 PHP
PHP中SESSION的注销与清除
Apr 16 PHP
PHP实现事件机制的方法
Jul 10 PHP
Yii2.0高级框架数据库增删改查的一些操作
Nov 16 PHP
php关闭warning问题的解决方法
May 17 PHP
laravel 解决强制跳转 https的问题
Oct 22 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 PHP
WordPress多语言翻译插件 - WPML使用教程
Apr 01 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
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
php实现URL加密解密的方法
2016/11/17 PHP
PHP7如何开启Opcode打造强悍性能详解
2018/05/11 PHP
Apply an AutoFormat to an Excel Spreadsheet
2007/06/12 Javascript
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
setTimeout和setInterval的区别你真的了解吗?
2011/03/31 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
基于jQuery实现文本框缩放以及上下移动功能
2014/11/24 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
2017/03/09 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
谈谈JS中的!!
2017/12/07 Javascript
vue实现修改图片后实时更新
2019/11/14 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
[51:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第二局
2016/03/03 DOTA
python计算圆周长、面积、球体体积并画出圆
2014/04/08 Python
Python单链表简单实现代码
2016/04/27 Python
Python中MySQL数据迁移到MongoDB脚本的方法
2016/04/28 Python
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
python3实现全角和半角字符转换的方法示例
2017/09/21 Python
python编写微信远程控制电脑的程序
2018/01/05 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
Python如何读取、写入CSV数据
2020/07/28 Python
澳大利亚在线家具、灯饰和家居装饰店:LivingStyles
2018/11/20 全球购物
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
物业经理求职自我评价
2013/09/22 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
幼儿园体操比赛口号
2015/12/25 职场文书
2016年第104个国际护士节活动总结
2016/04/06 职场文书
Python 中数组和数字相乘时的注意事项说明
2021/05/10 Python
python基础入门之字典和集合
2021/06/13 Python
MySQL创建管理HASH分区
2022/04/13 MySQL