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 相关文章推荐
Phpbean路由转发的php代码
Jan 10 PHP
php获取地址栏信息的代码
Oct 08 PHP
PHP程序级守护进程的实现与优化的使用概述
May 02 PHP
php操作(删除,提取,增加)zip文件方法详解
Mar 12 PHP
Yii框架组件和事件行为管理详解
May 20 PHP
thinkphp jquery实现图片上传和预览效果
Jul 22 PHP
PHP+Ajax 检测网络是否正常实例详解
Dec 16 PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
Feb 08 PHP
Yii2汉字转拼音类的实例代码
Apr 18 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
Oct 15 PHP
解决php扩展安装不生效问题
Oct 25 PHP
PHP文件打开关闭及读写操作示例解析
Aug 06 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
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
利用PHP实现短域名互转
2013/07/05 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
thinkPHP简单调用函数与类库的方法
2017/03/15 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
javascript json2 使用方法
2010/03/16 Javascript
javascript当中的代码嗅探扩展原生对象和原型(prototype)
2013/01/11 Javascript
jquery.blockUI.js上传滚动等待效果实现思路及代码
2013/03/18 Javascript
JavaScript变量声明详解
2014/11/27 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
jQuery基于ajax实现带动画效果无刷新柱状图投票代码
2015/08/10 Javascript
javascript日期操作详解(脚本之家整理)
2015/09/05 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
详解获取jq ul第一个li定位的四种解决方案
2016/11/23 Javascript
JavaScript中校验银行卡号的实现代码
2016/12/19 Javascript
vue-dialog的弹出层组件
2020/05/25 Javascript
jquery dataTable 获取某行数据
2017/05/05 jQuery
解析vue中的$mount
2017/12/21 Javascript
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
2018/03/05 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
Vue父子组件传值的一些坑
2020/09/16 Javascript
利用Python实现Windows定时关机功能
2017/03/21 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
Python使用Phantomjs截屏网页的方法
2018/05/17 Python
python模拟菜刀反弹shell绕过限制【推荐】
2019/06/25 Python
python绘制多个子图的实例
2019/07/07 Python
Canvas实现放大镜效果完整案例分析(附代码)
2020/11/26 HTML / CSS
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
以实惠的价格轻松租车,免费取消:Easyrentcars
2019/07/16 全球购物
法国在线药房:Shop Pharmacie
2019/11/26 全球购物
运动会拉拉队口号
2014/06/09 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
Python中的变量与常量
2021/11/11 Python