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 相关文章推荐
ajax php 实现写入数据库
Sep 02 PHP
Linux下将excel数据导入到mssql数据库中的方法
Feb 08 PHP
php发送post请求函数分享
Mar 06 PHP
php调用c接口无错版介绍
Mar 11 PHP
PHP生成自适应大小的缩略图类及使用方法分享
May 06 PHP
yii2分页之实现跳转到具体某页的实例代码
Jun 02 PHP
PHP简单读取PDF页数的实现方法
Jul 21 PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 PHP
CI框架实现框架前后端分离的方法详解
Dec 30 PHP
php实时倒计时功能实现方法详解
Feb 27 PHP
laravel实现查询最后执行的一条sql语句的方法
Oct 09 PHP
PHP mkdir创建文件夹实现方法解析
Nov 13 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时间戳 strtotime()使用方法和技巧
2013/10/29 PHP
php静态文件生成类实例分析
2015/01/03 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
jQuery入门知识简介
2010/03/04 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
Underscore.js常用方法总结
2015/02/28 Javascript
js实现仿微博滚动显示信息的效果
2015/12/21 Javascript
基于JavaScript实现前端文件的断点续传
2016/10/17 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
2016/10/25 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
JS正则子匹配实例分析
2016/12/22 Javascript
基于JavaScript实现全选、不选和反选效果
2017/02/15 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
VueJs 搭建Axios接口请求工具
2017/11/20 Javascript
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
Python实现方便使用的级联进度信息实例
2015/05/05 Python
Python下载指定页面上图片的方法
2016/05/12 Python
Python设计模式之代理模式简单示例
2018/01/09 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
2019/06/14 Python
浅谈python锁与死锁问题
2020/08/14 Python
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
What's the difference between deep copy and shallow copy? (深拷贝与浅拷贝有什么区别)
2015/11/10 面试题
系统管理员的职责包括那些?管理的对象是什么?
2016/09/20 面试题
学习自我鉴定
2014/02/01 职场文书
第二批党的群众路线教育实践活动总结报告
2014/10/30 职场文书
英文诗歌翻译方法(赏析)
2019/08/16 职场文书
奇妙的 CSS shapes(CSS图形)
2021/04/05 HTML / CSS
golang在GRPC中设置client的超时时间
2021/04/27 Golang
Python进阶学习之带你探寻Python类的鼻祖-元类
2021/05/08 Python
Nginx防盗链与服务优化配置的全过程
2022/01/18 Servers
python使用BeautifulSoup 解析HTML
2022/04/24 Python
Nginx 安装SSL证书完成HTTPS部署
2022/04/28 Servers