<1>静态与普通的区别:
1.属性方面:从内存角度看,静态属性存放在类的区域里
普通属性存放在对象中
类声明处,该静态属性就已经存在;当一个对象都没有,静态属性也已经随类声明而存在
2.方法调动:普通方法需要对象去调动,需要绑定$this(必须有对象,由对象去调动)
而静态方法不属于对象属于类,通过类名就可以调动
普通方法和静态方法都存放在类内,只有1份
因为类在内存中只有一个,因此静态属性只有一个,为所有的对象共享
3.访问:类可以访问静态方法,不可以访问动态方法(除非有this)
对象可以访问静态方法也可以访问动态方法
<2>单例模式:保护或私有构造函数防止外部实例化
类有一个静态的属性存放对象,当静态属性已经存在,直接return该对象
1.实例化的方法:
(1)内部开放一个公共的静态方法,负责实例化,普通类可以实例化
(2)通过内部的static方法实例化,并且把实例保存在类的内部静态属性上
(3)final 最终的,可以修饰类,方法,不能修改
修饰类,则此类不能继承,修饰方法可以继承,不能重写
#注意:把构造方法保护或者私有了,外部不能new
2.判断是否实例
instanceof判断某对象是不是某个类的实例
static function getInstance(){
if(self::$ins instanceof self){
return self::$ins;
}else{
self::$ins= new self();
return self::$ins;}
}