JGood

    博客已搬迁自: http://darkbull.net

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

class Student
{
 //静态成员,DAL层_Class的实例
 private static $dal;
 
 
 /**
  * 构造函数,初始化$dal
  */
 public function __construct()
 {
  self::$dal = DALFactory::GetStudentInstance();
 }
 
 public function Method()
 {
 
 }
 
 /**
  * 调用下面的静态方法是错误的,因为$dal没有实例化
  */
 public static function StaticMethod()
 {
  return self::$dal->DALStaticMethod();
 }
 
 /**
  * this method is ok
  */
 pulic static function StaticMethod1()
 {
  return "OK";
 }
}

上面一个类中定义了一个静态成员$dal,作为业务层对数据层的调用,注意:这是我是在构造函数中初始化的,
如果没有生成类的实例,那么$dal将不能被实例化,所以如果调用Student类的静态方法:Student::StaticMethod()
是错误的,而Student::StaticMethod1()是可以正常使用的。
所以PHP中的静态成员,不像.NET与Java那样,他只是为了“静态”而“静态”,只是简化一个“简单方法”的
调用(不用每次生成类的实例)。在.NET中,类的静态成员将被载入到内存中,即使不使用,也不会释放,当调用时,
直接从内存中调用,非常快。静态成员只在第一个类实例初始化的时候初始化,以后将常驻内存。

posted on 2007-04-02 13:05  JBoy  阅读(235)  评论(0编辑  收藏  举报