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中,类的静态成员将被载入到内存中,即使不使用,也不会释放,当调用时,
直接从内存中调用,非常快。静态成员只在第一个类实例初始化的时候初始化,以后将常驻内存。