在PHP面向对象中一般我们都是实例化一个类得到一个对象来访问这个对象的属性和方法,把对象当做是活动的组件,对象的方法可以用来被调用,对象的属性可以被访问,其实面向对象的很大一个特点是操作通过类实例化的对象来完成,毕竟,类仅仅是对象的一个模板而已,但是对于静态方法或者是静态属性而言,我们可以直接通过类来访问他们,只要我们用static关键字声明他们就好了.
**static是php5后引入的,在这之前的版本是不能使用的,
总结如下:
1.静态方法是以类作为作用域的函数,所以静态方法不能访问非静态的属性,因为他们属于对象而不是类,但是可以访问静态属性
2.在类外部可以通过类名::属性名/方法名来实现的,区别于一般的->普通访问方式,
StaticClass::$sataic_name;
StaticClss::Static_Function();
3.在类的内部,可以通过self::属性名/方法名来实现,
calss StaticClass{
public static $static_num = 0;
public static public function(){
self::$static_num++';
print "hello(".self::$static_num.")";
}
}
所以根据定义,我们也不能在对象中调用静态方法,因此静态方法和属性又被称为类变量和属性,因此不能再静态方法中使用伪变量$this;
网友评论