本文主要向大家介绍了PHP语言生成对象之设计模式—单例模式,通过具体的实例向大家展示,希望对大家学习php语言有所帮助。
1、什么是单例模式?
从名字可以理解,确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。通俗理解(单例模式一般也就是强调类的静态调用,一个进程对一个类的多次调用只产生一个类对象)
2、单例模式有那些好处呢?
PHP应用主要用于数据库应用,因此会存在大量的数据库操作,使用单例模式可以避免大量的 new 操作消耗的资源。
单例模式是一种对于全局变量的改进
3、实例场景:
[php] view plain copy print?
1. <?php
2. /*
3. * PHP生成对象之设计模式—单例模式
4. * 用于保存基本信息的单例类 存储URL目录、文件路径等数据
5. * 1、Preferences对象可以被系统中中任何对象使用
6. * 2、Preferences对象不被存储在会被覆写的全局变量中
7. */
8. class Preferences{
9. private $props=array();
10. //保存例实例在此属性中
11. private static $instance;
12. //构造函数声明为private,防止直接创建对象
13. private function __construct(){}
14. //单例方法
15. public static function getInstance(){
16. if(empty(self::$instance)){
17. self::$instance=new Preferences();
18. }
19. return self::$instance;
20. }
21. //设置属性和属性值
22. public function setProperty($key,$val){
23. $this->props[$key]=$val;
24. }
25. //读取值
26. public function getProperty($key){
27. return $this->props[$key];
28. }
29. }
30. //得到Preferences类的单例对象
31. $pref=Preferences::getInstance();
32. //设置一个属性 name 的值 为matt
33. $pref->setProperty("name","matt");
34. //移除引用
35. unset($pref);
36. //得到Preferences类的单例对象
37. $pref2=Preferences::getInstance();
38. //输出属性name 的属性值 该属性值未丢失
39. print $pref2->getProperty("name");
以上就介绍了PHP的相关知识,希望对PHP有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言PHP频道!