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上传apk后自动提取apk包信息的使用(示例下载)
Apr 26 PHP
php中函数前加&amp;符号的作用分解
Jul 08 PHP
PHP数组排序之sort、asort与ksort用法实例
Sep 08 PHP
php中explode函数用法分析
Nov 15 PHP
支付宝接口开发集成支付环境小结
Mar 17 PHP
PHP错误Warning:mysql_query()解决方法
Oct 24 PHP
PHP使用数组依次替换字符串中匹配项
Jan 08 PHP
php中各种定义变量的方法小结
Oct 18 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
Yii框架日志记录Logging操作示例
Jul 12 PHP
PHP设计模式之观察者模式定义与用法示例
Aug 04 PHP
PHP进阶学习之依赖注入与Ioc容器详解
Jun 19 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游戏编程25个脚本代码
2011/02/08 PHP
php密码生成类实例
2014/09/24 PHP
php+xml编程之SimpleXML的应用实例
2015/01/24 PHP
php+redis实现多台服务器内网存储session并读取示例
2017/01/12 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
解析jquery获取父窗口的元素
2013/06/26 Javascript
jQuery获取iframe的document对象的方法
2014/10/10 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
javascript基础知识之html5轮播图实例讲解(44)
2017/02/17 Javascript
详解angularjs 关于ui-router分层使用
2017/06/12 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
2017/07/13 Javascript
jQuery实现ajax回调函数带入参数的方法示例
2018/06/26 jQuery
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
Javascript中parseInt的正确使用方式
2018/10/17 Javascript
详解element-ui中el-select的默认选择项问题
2019/08/02 Javascript
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
[01:53]3.19 DOTA2发布会 现场精彩Coser表演
2014/03/25 DOTA
[02:23]2014DOTA2国际邀请赛中国战队回顾
2014/08/01 DOTA
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
详解python websocket获取实时数据的几种常见链接方式
2019/07/01 Python
ML神器:sklearn的快速使用及入门
2019/07/11 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
Julep官网:美容产品和指甲油
2017/02/25 全球购物
医学毕业生自我鉴定
2013/10/30 职场文书
护理专业自荐信
2013/12/03 职场文书
信用社员工先进事迹材料
2014/02/04 职场文书
西式结婚主持词
2014/03/14 职场文书
班主任高考寄语
2015/02/26 职场文书
工程部岗位职责范本
2015/04/11 职场文书
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android