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 相关文章推荐
提问的智慧(2)
Oct 09 PHP
桌面中心(一)创建数据库
Oct 09 PHP
很好用的PHP数据库类
May 27 PHP
Php 构造函数construct的前下划线是双的_
Dec 08 PHP
php数组键值用法实例分析
Feb 27 PHP
php简单统计字符串单词数量的方法
Jun 19 PHP
PHP实现无限级分类(不使用递归)
Oct 22 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
Sep 26 PHP
laravel 实现上传图片到本地和前台访问示例
Oct 21 PHP
php经典趣味算法实例代码
Jan 21 PHP
WordPress免插件实现面包屑导航的示例代码
Aug 20 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根据年月获取当月天数及日期数组的方法
2016/11/30 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
Git命令之分支详解
2021/03/02 PHP
jquery 最简单易用的表单验证插件
2010/02/27 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
2013/06/08 Javascript
两种方法实现在HTML页面加载完毕后运行某个js
2014/06/16 Javascript
基于Jquery和html5的7款个性化地图插件
2015/11/17 Javascript
分享javascript计算时间差的示例代码
2020/03/19 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
js获取一组日期中最近连续的天数
2017/05/25 Javascript
三种Webpack打包方式(小结)
2018/09/19 Javascript
node中实现删除目录的几种方法
2019/06/24 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
使用python实现baidu hi自动登录的代码
2013/02/10 Python
用Python进行一些简单的自然语言处理的教程
2015/03/31 Python
用Python进行TCP网络编程的教程
2015/04/29 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
python 生成图形验证码的方法示例
2018/11/11 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
2019/10/12 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
雅诗兰黛旗下走天然植物路线的彩妆品牌:Prescriptives
2016/08/14 全球购物
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
文员岗位职责
2013/11/09 职场文书
先进党支部事迹材料
2014/01/13 职场文书
光盘行动倡议书
2014/02/02 职场文书
《山谷中的谜底》教学反思
2014/04/26 职场文书
文案策划专业自荐信
2014/07/07 职场文书
职业生涯规划书怎么写?
2014/09/14 职场文书
学校2016年九九重阳节活动总结
2016/04/01 职场文书
go goroutine 怎样进行错误处理
2021/07/16 Golang
MySQL窗口函数的具体使用
2021/11/17 MySQL