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

本文介绍了PHP中类的静态成员,包括静态属性和静态方法。静态成员与对象实例无关,属于类本身,可用于实现类的功能和数据共享。静态属性如Counter::$count,可以由所有类实例共享;静态方法与特定对象无关,类似全局函数,可以不通过对象直接调用。通过示例代码展示了静态成员的使用,并与非静态方法进行了对比。同时,还提及了类常量的定义,它们也是静态的。
摘要由CSDN通过智能技术生成

第七节 类的静态成员 [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");

?>

相关文章

1a1b05c64693fbf380aa1344a7812747.png

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

4f55910a645b073bc4fc65dc10dc14bd.png

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

0ea3c7666119d5615e582f823fb3fad6.png

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

4f96a78db829b1556ff16de21e013c7a.png

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

8cc1031babc6aff2319f1c6af8544aa0.png

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

0c932a99bb7b6f23c937db507070cc7b.png

PHP 和 COM...2006-10-10

cca732bf65a93ed2ec0ac80c638460fe.png

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

2d9f31f2af7b675a3d153d2b7f1035a7.png

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

b452cee8ec5cd9e58ab98eba17281e59.png

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

f4838ec7e2d4da28e0b57d4e852dadd4.png

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

最新评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值