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判断字符以及字符串的包含方法属性
Aug 30 PHP
php利用单例模式实现日志处理类库
Feb 10 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
thinkphp模板的包含与渲染实例分析
Nov 26 PHP
php采集中国代理服务器网的方法
Jun 16 PHP
使用Huagepage和PGO来提升PHP7的执行性能
Nov 30 PHP
win7安装php框架Yii的方法
Jan 25 PHP
CodeIgniter框架基本增删改查操作示例
Mar 23 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 PHP
php获取微信openid方法总结
Oct 10 PHP
PHP实现常用排序算法的方法
Feb 05 PHP
深入浅析安装PhpStorm并激活的步骤详解
Sep 17 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
漫威DC即将合作联动,而双方早已经秘密开始
2020/04/09 欧美动漫
杏林同学录(六)
2006/10/09 PHP
php将文本文件转换csv输出的方法
2014/12/31 PHP
CodeIgniter视图使用注意事项
2016/01/20 PHP
/etc/php-fpm.d/www.conf 配置注意事项
2017/02/04 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
jquery+css3打造一款ajax分页插件(自写)
2014/06/18 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
js实现上传图片及时预览
2016/05/07 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
2016/06/21 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
AngularJS中的包含详细介绍及实现示例
2016/07/28 Javascript
html判断当前页面是否在iframe中的实例
2016/11/30 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
layer实现关闭弹出层刷新父界面功能详解
2017/11/15 Javascript
Node.js搭建小程序后台服务
2018/01/03 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
layui checkbox默认选中,获取选中值,清空所有选中项的例子
2019/09/02 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
vue实现广告栏上下滚动效果
2020/11/26 Vue.js
举例讲解Python的Tornado框架实现数据可视化的教程
2015/05/02 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
2019/10/24 Python
python numpy 矩阵堆叠实例
2020/01/17 Python
TensorBoard 计算图的查看方式
2020/02/15 Python
keras模型保存为tensorflow的二进制模型方式
2020/05/25 Python
利用python制作拼图小游戏的全过程
2020/12/04 Python
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
2014年德育工作总结
2014/11/20 职场文书
党员观看《筑梦中国》心得体会
2016/01/18 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js
vue+echarts实现多条折线图
2022/03/21 Vue.js