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常用函数 推荐收藏保存
Feb 21 PHP
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
Jul 09 PHP
深入探讨PHP中的内存管理问题
Aug 31 PHP
PHP整数取余返回负数的相关解决方法
May 15 PHP
PHP Session机制简介及用法
Aug 19 PHP
php通过asort()给关联数组按照值排序的方法
Mar 18 PHP
php中file_exists函数使用详解
May 08 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
Nov 20 PHP
PHP机器学习库php-ml的简单测试和使用方法
Jul 14 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
Sep 17 PHP
Laravel框架搜索分页功能示例
Feb 01 PHP
PHP FileSystem 文件系统常用api整理总结
Jul 12 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两种无限分类方法实例
2015/04/21 PHP
PHP直接修改表内容DataGrid功能实现代码
2015/09/24 PHP
js 异步处理进度条
2010/04/01 Javascript
改写一个简单的菜单 弹性大小
2010/12/02 Javascript
jquery如何把参数列严格转换成数组实现思路
2013/04/01 Javascript
DropDownList实现可输入可选择(两种版本可选)
2016/12/07 Javascript
nodejs使用http模块发送get与post请求的方法示例
2018/01/08 NodeJs
Vue-component全局注册实例
2018/09/06 Javascript
JS 数组随机洗牌的实例代码
2018/09/12 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
JS猜数字游戏实例讲解
2020/06/30 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
2020/09/17 Javascript
python不带重复的全排列代码
2013/08/13 Python
python使用pil生成图片验证码的方法
2015/05/08 Python
python 数据的清理行为实例详解
2017/07/12 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
java判断三位数的实例讲解
2019/06/10 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
win10下python2和python3共存问题解决方法
2019/12/23 Python
python logging模块的使用详解
2020/10/23 Python
遗体告别仪式答谢词
2014/01/23 职场文书
庆元旦文艺演出主持词
2014/03/27 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
2014七年级班主任工作总结
2014/12/05 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
教师年终个人总结
2015/02/11 职场文书
2015年清明节演讲稿范文
2015/03/17 职场文书
高三教师工作总结2015
2015/07/21 职场文书
重阳节主题班会
2015/08/17 职场文书
保险公司2016开门红口号集锦
2015/12/24 职场文书
《社戏》教学反思
2016/02/22 职场文书
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python
JavaScript实现队列结构过程
2021/12/06 Javascript