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 auth_http类库进行身份效验
Mar 19 PHP
php知道与问问的采集插件代码
Oct 12 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
Jul 16 PHP
PHP常用的文件操作函数经典收藏
Apr 02 PHP
php设计模式之命令模式的应用详解
May 21 PHP
浅析php中抽象类和接口的概念以及区别
Jun 27 PHP
Laravel 5框架学习之表单
Apr 08 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
Jan 08 PHP
linux下php上传文件注意事项
Jun 11 PHP
Laravel学习教程之model validation的使用示例
Oct 23 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
Jun 25 PHP
laravel与thinkphp之间的区别与优缺点
Mar 02 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
Syphon 使用方法
2021/03/03 冲泡冲煮
计算2000年01月01日起到指定日的天数
2006/10/09 PHP
用PHP读取RSS feed的代码
2008/08/01 PHP
ThinkPHP中实例Model方法的区别说明
2010/08/21 PHP
用mysql_fetch_array()获取当前行数据的方法详解
2013/06/05 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
2016/09/11 PHP
php查询内存信息操作示例
2019/05/09 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
JavaScript 特殊字符
2007/04/05 Javascript
javascript 伪数组实现方法
2010/10/11 Javascript
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
jquery实现先淡出再折叠收起的动画效果
2015/08/07 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
详解Vue用axios发送post请求自动set cookie
2017/05/10 Javascript
基于vue监听滚动事件实现锚点链接平滑滚动的方法
2018/01/17 Javascript
layui实现文件或图片上传记录
2018/08/28 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
2018/08/30 Javascript
微信小程序实现弹出菜单动画
2019/06/21 Javascript
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
在Windows中设置Python环境变量的实例讲解
2018/04/28 Python
python中的json总结
2018/10/11 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
Python PIL图片添加字体的例子
2019/08/22 Python
解决Jupyter因卸载重装导致的问题修复
2020/04/10 Python
Python ckeditor富文本编辑器代码实例解析
2020/06/22 Python
Python常用GUI框架原理解析汇总
2020/12/07 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
新加坡时尚网上购物:Zalora新加坡
2016/07/26 全球购物
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
高三自我鉴定范文
2013/10/19 职场文书
大课间活动制度
2014/01/18 职场文书
学生保证书
2015/01/16 职场文书
2015年秋学期师德师风建设工作总结
2015/10/23 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript