php单例模式

【关键字】

1、final

① final修饰的类为最终类,不能被继承!!

② final修饰的方法为最终方法,不能够被重写 

③ final不能修饰属性!!

 2、static

① 可以修饰属性和方法称为静态属性和静态方法,也叫类属性和类方法

 static public $name;

 static function func(){}

② 静态属性,静态方法,只能使用类名调用

 Person::#name;Person::func();

③ 静态属性和方法,在类第一个装载时声明,会先于对象产生(成员属性和方法在对象实例化时声明)。

④ 在静态方法中,不能调用非静态属性和方法;

在非静态方法中,可以调用静态属性和方法;

 (因为静态属性和方法在类装载时声明,此时还没有对象,更没有成员属性

⑤ 在类中,可以使用self关键字代指本类声明

 class public{

 static public $name;

 function say(){

 `echo self::$name;√

 `echo Person::$name;√

 }

 }

 echo Person::$name;

⑥ 静态属性是共享的。也就是new很多对象也是共用一个属性。

 3、const

 ① 在类中,声明常量不能使用define()函数,而且必须使用construction关键字!!

 const COUNT = "16亿";

 ② const声明的常量,依然要求必须全部大写,而且不能使用$符号!!!

 ③ 常量一点声明不能改变!!与static相同只能使用类名调用!!!

 echo Person::COUNT;

 4、instanceof 操作符

 检查一个对象是否是一个类的实例!!(包括父类,父类的父类。。。。。)

 var_dump($s instanceof Student);√

  var_dump($s instanceof Person);√

【小总结】几种常用的操作符

1、 . 只能连接字符串的作用。 "".""

2、 => 声明数组时,进行键值关联。 ["key"=>"value"];

3、 -> 使用对象调用成员属性和方法时  。$zhangsan -> name;  $this->name;

4、 :: ①使用类名调用静态属性和方法时。 Person::$name;self::$name;

  使用类名调用常量。 Person::COUNT;

 ②使用parent调用父类已有同名方法时。  parent::say();

[图片]

[单例模式]

 单例模式也叫单态模式,可以保证一个类只能有一个对象实例

 实现思路:

  ① 构造函数私有化,不允许使用new关键字拿到实例化对象

  ② 所以需要对外提供一个方法,在方法中,判断内存是否已经有这个对象了,如果为空则创建一个新对象返回,如果不为空则直接返回

  ③ 由于类外无法拿到对象,所以要调用方法必须使用类名。n那么方法就必须是静态方法

  ④ 由于方法是静态方法,静态方法中不能使用非静态属性,所以属性必须是静态属性

  ⑤ 全部完成后,在类外面可以直接使用我们提供的静态方法,获得为一对象:

  Person::getSingle();

原文地址:https://www.cnblogs.com/junwuyao/p/7864786.html