首页 理论教育PHPMVC开发实战:使用版本的static关键字

PHPMVC开发实战:使用版本的static关键字

【摘要】:在成员变量前加上static关键字即成为了静态类变量,它的定义方式与普通的类成员变量并没有较大区别;如果在类成员方法前加上static关键字,那么该方法即成为了静态方法。如果一个类中既有实例化方法,也有静态方法,那么在静态方法中将不能直接使用$this关键字进行调用。下面通过代码演示static关键字的使用。事实上在调用实例类成员时,开发人员同样可以使用“class::action()”调用实例类成员,但需要配置php.ini的错误级别,否则将会产生“Non-static”错误。

在成员变量前加上static关键字即成为了静态类变量,它的定义方式与普通的类成员变量并没有较大区别;如果在类成员方法前加上static关键字,那么该方法即成为了静态方法。如果一个类中既有实例化方法,也有静态方法,那么在静态方法中将不能直接使用$this关键字进行调用。下面通过代码演示static关键字的使用。

如上述代码所示,使用关键字static声明了两个成员变量和1个成员方法。这就意味着这3个类成员都是静态化的。前面已经讲述过,一旦类的成员被静态化,它就不属于类对象的一部分,所以在调用时直接使用显式的“类名::静态类成员”方式调用即可。但是,由于构造函数并非静态成员,需要在对象中进行实例化,它才会被调用,所以上述代码的构造函数将会处于失效状态,运行结果如以下代码所示。

事实上,在调用静态类成员时,PHP提供了非常弹性的方式。开发人员可以在非静态方法中使用实例化的方式调用静态类成员,如以下代码所示。(www.chuimin.cn)

上述代码使用了类对象,它不仅能够实例化类,还能调用包括静态类成员在内的类成员。事实上在调用实例类成员时,开发人员同样可以使用“class::action()”调用实例类成员,但需要配置php.ini的错误级别,否则将会产生“Non-static”错误。经过改造,上述代码中的构造函数将会被执行,静态类成员也会被调用。

值得说明的是,虽然PHP提供了多种调用静态类成员的方式,但在实际应用开发中,通常使用“类名::静态类成员”的方式调用静态类成员;而使用new关键字调用实例类成员。