理解PHP5中static和const关键字的区别


Posted in PHP onMarch 19, 2007

PHP5中加入了很多面向对象的思想,PHP5的面向对象比较接近Java的面向对象思想。我们这里对PHP5中的static和const关键字作用进行一下描述,希望对学习PHP5的朋友有帮助。
(1) static
static关键字在类中是,描述一个成员是静态的,static能够限制外部的访问,因为static后的成员是属于类的,是不属于任何对象实例,其他类是无法访问的,只对类的实例共享,能一定程序对该成员尽心保护。类的静态变量,非常类似全局变量,能够被所有类的实例共享,类的静态方法也是一样的,类似于全局函数。类的静态方法能访问类的静态的属性。另外说明的是,static的成员,必须使用self来访问,使用this会出错。
(关于this和self的异同,请参考: http://blog.csdn.net/heiyeshuwu/archive/2004/11/03/165828.aspx )
(2)const
const是一个定义常量的关键字,类似于C中的#define,能够定义一个常量,如果在程序中改变了它的值,那么会出现错误。
举例说明上面的代码:(注:以下代码来自phpe.net)

<?php  
class Counter  
{  
 private static $count = 0;//定义一个静态属性  
 const VERSION = 2.0;//定义一个常量  
 //构造函数  
 function __construct()  
 {  
  self::$count++;  
 }  
 //析构函数  
 function __destruct()  
 {  
  self::$count--;  
 }  
 //定义一个静态的方法  
 static function getCount()  
 {  
  return self::$count;  
 }  
}  
//创建一个实例  
$c = new Counter();  
//执行打印  
print( Counter::getCount(). "<br>n" ); //使用直接输入类名来访问静态方法Counter::getCount  
//打印类的版本  
print( "Version useed: " .Counter::VERSION. "<br>n" );  
?>  

恩,基本到这里,心里知道的那点东西就讲清楚了,不过我觉得自己对static还有点不理解,请高手指点!
PHP 相关文章推荐
php5.3中连接sqlserver2000的两种方法(com与ODBC)
Dec 29 PHP
php stream_get_meta_data返回值
Sep 29 PHP
thinkphp实现数组分页示例
Apr 13 PHP
Linux系统递归生成目录中文件的md5的方法
Jun 29 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
Apr 15 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
Jun 22 PHP
php获取服务器操作系统相关信息的方法
Oct 08 PHP
php实现图片按比例截取的方法
Feb 06 PHP
Yii2汉字转拼音类的实例代码
Apr 18 PHP
php使用curl下载指定大小的文件实例代码
Sep 30 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
May 12 PHP
Laravel框架验证码类用法实例分析
Sep 11 PHP
php中目录,文件操作详谈
Mar 19 #PHP
PHP配置文件中最常用四个ini函数
Mar 19 #PHP
推荐一篇入门级的Class文章
Mar 19 #PHP
隐藏你的.php文件的实现方法
Mar 19 #PHP
生成静态页面的php函数,php爱好者站推荐
Mar 19 #PHP
php分页示例代码
Mar 19 #PHP
简单介绍下 PHP5 中引入的 MYSQLI的用途
Mar 19 #PHP
You might like
Yii配置文件用法详解
2014/12/04 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
PHP中的静态变量及static静态变量使用详解
2015/11/05 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
Confirmer JQuery确认对话框组件
2010/06/09 Javascript
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
jQuery mobile 移动web(4)
2015/12/20 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
2016/05/27 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
React组件refs的使用详解
2018/02/09 Javascript
Vue 动态组件与 v-once 指令的实现
2019/02/12 Javascript
ES6中的Javascript解构的实现
2020/10/30 Javascript
python 获取文件列表(或是目录例表)
2009/03/25 Python
Python中实现从目录中过滤出指定文件类型的文件
2015/02/02 Python
python获取一组数据里最大值max函数用法实例
2015/05/26 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
PyQt5实现简易计算器
2020/05/30 Python
python实现实时视频流播放代码实例
2020/01/11 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
python利用opencv实现SIFT特征提取与匹配
2020/03/05 Python
python使用matplotlib:subplot绘制多个子图的示例
2020/09/24 Python
CSS3实现渐变背景兼容问题
2020/05/06 HTML / CSS
测试工程师岗位职责
2013/11/28 职场文书
销售团队激励口号
2014/06/06 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
家庭经济困难证明
2015/06/23 职场文书
学生会宣传部竞选稿
2015/11/21 职场文书
python如何读取.mtx文件
2021/04/22 Python
pycharm代码删除恢复的方法
2021/06/26 Python
Vue实现导入Excel功能步骤详解
2021/07/03 Vue.js
MySQL 1130异常,无法远程登录解决方案详解
2021/08/23 MySQL
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python