第七节 类的静态成员 [7]

更新时间:2006年10月09日 00:00:00   作者:

类的静态成员与一般的类成员不同: 静态成员与对象的实例无关,只与类本身有关. 他们用来实现类要封装的功能和数据,但不包括特定对象的功能和数据. 静态成员包括静态方法和静态属性.

静态属性包含在类中要封装的数据,可以由所有类的实例共享. 实际上,除了属于一个固定的类并限制访问方式外,类的静态属性非常类似于函数的全局变量

我们在下例中使用了一个静态属性Counter::$count. 它属于Counter类,而不属于任何Counter的实例.你不能用this来引用它,但可以用self或其它有效的命名表达. 在例子中,getCount方法返回self::$count,而不是Counter::$count.

静态方法则实现类需要封装的功能,与特定的对象无关. 静态方法非常类似于全局函数. 静态方法可以完全访问类的属性,也可以由对象的实例来访问,不论访问的限定语是否是什么.

在6.3例中,getCount是一个普通的方法,用->来调用. PHP建立一个this变量,尽管方法没有使用到.但是,getCount不属于任何对象.在有些情况下,我们甚至希望在不存在有效的对象时调用它,那么就应该使用静态方法. PHP将不在静态方法内部建立this变量,即使你从一个对象中调用它们.

例子6.7由6.3改变getCount为静态方法而来. Static关键字不能阻止一个实例用->运算符来调用getCount,但PHP将不在方法内部建立this变量.如果你使用this->来调用,将会出错.

//6.3例指第四节--构造函数和析构函数中的例子(参看前文),通过两个例子的比较,你可以很好掌握

//static方法与普通方法之间的区别.

你可以写一个方法通过判断this是否建立来显示是否它被静态地或者非静态地调用. 当然,如果你用了static 关键字,不管它怎样被调用,这个方法总是静态的.

你的类也可以定义常量属性,不需要使用public static,只需要用const关键字即可. 常量属性总是静态的.它们是类的属性,而不是实例化该类的对象的属性.

Listing 6.7 Static members

class Counter

{

private static $count = 0;

const VERSION = 2.0;

function __construct()

{

self::$count++;

}

function __destruct()

{

self::$count--;

}

static function getCount()

{

return self::$count;

}

};

//创建一个实例,则__construct()将执行

$c = new Counter();

//输出 1

print(Counter::getCount() . "
n");

//输出类的版本属性

print("Version used: " . Counter::VERSION . "
n");

?>

相关文章

VML绘图板②脚本--VMLgraph.js、XMLtool.js...2006-10-10

PHP5的XML新特性...2006-10-10

接口是一种特殊的抽象类,抽象类又是一种特殊的类2011-06-06

php中对2个数组相加的函数代码,需要的朋友可以参考下。2011-06-06

对盗链说再见......2006-10-10

PHP 和 COM...2006-10-10

挑战最棒的留言本的源码(一)...2006-10-10

简单易用的计数器(数据库)...2006-10-10

用PHP制作静态网站的模板框架(三)...2006-10-10

谈谈PHP语法(3)...2006-10-10

最新评论

php静态成员的例子,第七节 类的静态成员 [7]相关推荐

  1. Java入门 第七节 类和对象

    文章目录 1. 引言 1.1 什么是对象 1.2. 什么是类 2. 类和对象的关系 2.1 计算机怎么描述世界 2.2 类和对象 语法结构 2.3 创建类 和 调用对象 2.4 简单分析对象创建过程 ...

  2. C++ 类的静态成员及静态成员函数

    https://www.cnblogs.com/codingmengmeng/p/5906282.html C++ 类的静态成员及静态成员函数 对象与对象之间的成员变量是相互独立的.要想共用数据,则需 ...

  3. C++:类的静态成员变量及静态成员函数

    写在前面: 对象与对象之间的成员变量是相互独立的.要想共用数据,则需要使用静态成员和静态方法 只要在类中声明静态成员变量,即使不定义对象,也可以为静态成员变量分配空间,进而可以使用静态成员变量.(因为 ...

  4. 类的静态成员函数和静态数据成员

    一.静态数据成员 1.定义: 静态数据成员就是给类的普通数据成员加上关键字static. 2.访问规则 静态数据成员也遵守public/protected/private访问规则 访问静态成员时,则可 ...

  5. CPPDay05 C的静态成员,类的静态成员,单例模式,静态成员函数,继承(面向对象三大特性,高类聚,低耦合),继承方式(private,protected,public)多重复杂继承,虚继承

    目录 0x00 C中的静态成员: 0x01类的静态成员: 0x02单例模式: 0x03静态成员函数: 0x04继承: 0x05继承方式: 0x06多重复杂继承: 0x07虚继承: 0x00 C中的静态 ...

  6. Scala入门到精通——第七节:类和对象(二)

    本节主要内容 单例对象 伴生对象与伴生类 apply方法 应用程序对象 抽象类 单例对象 在某些应用场景下,我们可能不需要创建对象,而是想直接调用方法,但是Scala语言并不支持静态成员,scala通 ...

  7. Kotlin学习笔记 第二章 类与对象 第七节 数据类

    参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...

  8. C#基础篇七类和静态成员

    1.new关键字做的4个事情 1.1 开辟堆空间 a.开辟多大的空间呢? 当前类 所有的 成员变量类型所占空间的总和 + 类型指针(方法表的地址) b.开辟了空间干什么用呢? 存放 成员变量 1.2 ...

  9. 初阶C++——C++第二节——类和对象(大全篇)

    想必大家都听过这样一个段子: 编程界最不缺少的就是对象.因为编程世界,一切皆对象.没有对象怎么办?我可以new一个出来. 关于new的内容,我们下一节再说.本章节我们先说<类和对象>,并且 ...

最新文章

  1. supercharge快充_华为10V 2A充电器曝光,支持20W电荷泵快充
  2. pg 定时删除_PostgreSQL的时间函数使用整理
  3. 【Vegas原创】imp/exp导入导出数据
  4. 理想的人才梯队体系特征:40页人才梯队建设实施方案,果断收藏
  5. 通过ISA发布服务器(二)
  6. 楼市捞金术:我是怎么在9个月把房价炒高两三倍的
  7. CAD中如何使用Lisp程序编写坐标标注功能
  8. 中国科学院大学2019年高等代数考研试题
  9. Netty(四十一) - 心跳(heartbeat)源码剖析
  10. 我的世界java生存命令方块,我的世界命令方块指令大全
  11. [975]python requests实现HTTPS客户端的证书导入
  12. 单核CPU处理多线程
  13. R语言 图片识别文字 PNG JPG图片转文字 OCR tesseract包
  14. python中breakpoint什么意思_breakpoint() Python 内置函数
  15. 微信小程序图片轮播+预览效果实现
  16. 将一组数组尽可能均匀的分成两堆,使两个堆中的数的和尽可能相等
  17. 计算机毕业设计PHP+安卓移动LYQ电子商城APP(源码+程序+lw+远程调试)
  18. cesium中鼠标pick获取entity空间信息
  19. Python数据爬取之0基础小白实战(三)源码解析
  20. 新毒霸悟空2014 v0709 官方版

热门文章

  1. 理解VUE响应式原理
  2. Java构造器(构造方法)详解
  3. 哪一款蓝牙耳机性价比高?500元内高性能耳机品牌
  4. 83.面向忙碌开发者的 Android 知识点收录 (转)
  5. 景观风水十大原则 (转载)
  6. Java游戏开局农民_我的世界:开局5钻石!你的java版种子到了,请查收
  7. 数据库上钻、下钻、切片
  8. delphi 第三方控件安装
  9. Java Geometry计算轨迹与围栏交集效率测试及异常处理
  10. 国外顶尖高校、企业分享人工智能自学课程英文原课程分享