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 相关文章推荐
我的论坛源代码(一)
Oct 09 PHP
用缓存实现静态页面的测试
Dec 06 PHP
Notice: Trying to get property of non-object problem(PHP)解决办法
Mar 11 PHP
简单的php文件上传(实例)
Oct 27 PHP
使用PHP静态变量当缓存的方法
Nov 13 PHP
php对数组排序代码分享
Feb 24 PHP
PHP会话处理的10个函数
Aug 11 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
Apr 20 PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 PHP
php pdo连接数据库操作示例
Nov 18 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
Nov 24 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 动态多文件上传
2009/01/18 PHP
PHP管理内存函数 memory_get_usage()使用介绍
2012/09/23 PHP
基于curl数据采集之单页面采集函数get_html的使用
2013/04/28 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
PHP中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
thinkphp跨库操作的简单代码实例
2016/09/22 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
php微信开发之关注事件
2018/06/14 PHP
JavaScript表单常用验证集合
2008/01/16 Javascript
javascript学习笔记(五) Array 数组类型介绍
2012/06/19 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
2016/05/19 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
详解node child_process模块学习笔记
2018/01/24 Javascript
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
Python 实现王者荣耀中的敏感词过滤示例
2019/01/21 Python
python图形工具turtle绘制国际象棋棋盘
2019/05/23 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
2019/08/14 Python
基于 HTML5 的 WebGL 3D 版俄罗斯方块的示例代码
2018/05/28 HTML / CSS
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
Elizabeth Gage官网:英国最好的珠宝设计之一
2020/09/26 全球购物
数据员岗位职责
2013/11/19 职场文书
学校采购员岗位职责
2014/01/02 职场文书
廉洁自律承诺书
2014/03/27 职场文书
安全生产演讲稿
2014/05/09 职场文书
教师优秀党员事迹材料
2014/08/14 职场文书
篮球友谊赛通讯稿
2014/10/10 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
2015年妇幼保健工作总结
2015/05/19 职场文书
《月光曲》教学反思
2016/02/16 职场文书
写好求职信的技巧解密
2019/05/14 职场文书
Python爬虫框架之Scrapy中Spider的用法
2021/06/28 Python
vue3不同环境下实现配置代理
2022/05/25 Vue.js