linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > php >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·PHP生成静态页面的一些经验
·PHP无限分类与树型论坛的实现方
·php5学习笔记
·入门级PHP程序员面试题
·PHP 和 MySQL初学入门
·PHP入门速成
·vim的代码折叠
·文件下载统计php编程代码
·如何建立自己的新闻发布系统
·织梦CMS中文转换拼音函数研究
·Windows下Apache+Tomcat+MySQL
·PHP初学者头疼问题总结
·Cookie及其使用详细介绍
·生成sessionid和随机密码的例子
·使用无限生命期Session的方法
最新文章
·PHP入门速成
·用php实现广告轮播
·Zend Optimizer 问题浅析
·功能强大的CGI语言----PHP3
·用Session对Web页面进行保护
·PHP--进行模块化设计
·如何将PHP的结果输出到非PHP页
·如何开发一个虚拟域名系统
·PHP4调用自己编写的COM组件
·简单的页面缓冲技术(三)
·简单的页面缓冲技术(二)
·简单的页面缓冲技术(一)
·用Socket发送电子邮件(二)
·用Socket发送电子邮件(一)
·PHP/MySQL 购物车
Google
 
PHP 5.0对象模型深度探索之类的静态成员
[ 作者:  加入时间:2008-02-05 10:28:11  来自:Linux联盟收集整理 ]
类的静态成员与一般的类成员不同: 静态成员与对象的实例无关,只与类本身有关。他们用来实现类要封装的功能和数据,但不包括特定对象的功能和数据,静态成员包括静态方法和静态属性。 vejLinux联盟
   vejLinux联盟
    静态属性包含在类中要封装的数据,可以由所有类的实例共享。实际上,除了属于一个固定的类并限制访问方式外,类的静态属性非常类似于函数的全局变量。 vejLinux联盟
   vejLinux联盟
    我们在下例中使用了一个静态属性Counter::$count。它属于Counter类,而不属于任何Counter的实例。你不能用this来引用它,但可以用self或其它有效的命名表达。在例子中,getCount方法返回self::$count,而不是Counter::$count。 vejLinux联盟
   vejLinux联盟
    静态方法则实现类需要封装的功能,与特定的对象无关. 静态方法非常类似于全局函数. 静态方法可以完全访问类的属性,也可以由对象的实例来访问,不论访问的限定语是否是什么. vejLinux联盟
   vejLinux联盟
    在前文的例子中,getCount是一个普通的方法,用->来调用. PHP建立一个this变量,尽管方法没有使用到.但是,getCount不属于任何对象.在有些情况下,我们甚至希望在不存在有效的对象时调用它,那么就应该使用静态方法. PHP将不在静态方法内部建立this变量,即使你从一个对象中调用它们. vejLinux联盟
   vejLinux联盟
    例子6.7由6.3改变getCount为静态方法而来. Static关键字不能阻止一个实例用->运算符来调用getCount,但PHP将不在方法内部建立this变量.如果你使用this->来调用,将会出错. vejLinux联盟
   vejLinux联盟
  //6.3例指第四节--构造函数和析构函数中的例子(参看前文),通过两个例子的比较,你可以很好掌握 vejLinux联盟
  //static方法与普通方法之间的区别. vejLinux联盟
   vejLinux联盟
    你可以写一个方法通过判断this是否建立来显示是否它被静态地或者非静态地调用. 当然,如果你用了static 关键字,不管它怎样被调用,这个方法总是静态的. vejLinux联盟
   vejLinux联盟
    你的类也可以定义常量属性,不需要使用public static,只需要用const关键字即可. 常量属性总是静态的.它们是类的属性,而不是实例化该类的对象的属性. vejLinux联盟
   vejLinux联盟
  Listing 6.7 Static members vejLinux联盟
   vejLinux联盟
  class Counter vejLinux联盟
  { vejLinux联盟
   private static $count = 0; vejLinux联盟
   const VERSION = 2.0; vejLinux联盟
   vejLinux联盟
   function __construct() vejLinux联盟
   { vejLinux联盟
    self::$count++; vejLinux联盟
   } vejLinux联盟
   vejLinux联盟
   function __destruct() vejLinux联盟
   { vejLinux联盟
    self::$count--; vejLinux联盟
   } vejLinux联盟
   vejLinux联盟
   static function getCount() vejLinux联盟
   { vejLinux联盟
    return self::$count; vejLinux联盟
   } vejLinux联盟
  }; vejLinux联盟
   vejLinux联盟
  //创建一个实例,则__construct()将执行 vejLinux联盟
  $c = new Counter(); vejLinux联盟
   vejLinux联盟
  //输出 1 vejLinux联盟
  print(Counter::getCount() . "n"); vejLinux联盟
   vejLinux联盟
  //输出类的版本属性 vejLinux联盟
  print("Version used: " . Counter::VERSION . "n"); vejLinux联盟
  ?> Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·PHP 5.0对象模型深度探索之属性和方法  (2008-01-28 14:24:06)
 ·PHP 5.0对象模型深度探索之定义一个类  (2008-01-28 14:23:15)
 ·Delphi之OOP面向对向模型  (2007-11-16 12:32:40)
 ·c++类静态数据成员与类静态成员函数  (2007-10-23 14:18:35)
 ·深度探索C++对象模型完全版  (2007-10-23 13:25:53)
 ·ASP.NET 页面对象模型  (2007-10-16 15:10:16)
 ·Linux下Apache 2.2, MySQL 5.0和PHP 5.0的安装与配置  (2007-01-22 02:09:29)
 ·PHP 5.0中多态性的实现方案浅析  (2007-01-22 01:39:52)
 ·PHP 5.0中多态性的实现方案  (2006-06-09 11:44:16)
 ·PHP 5.0对象模型深度探索之绑定  (2006-06-08 22:39:05)