php单例模式如何实现(php的单例模式有什么具体好处具体在哪里实现面试的时候让人问到..求解)

:暂无数据 2026-09-12 03:10:01 :0

php单例模式如何实现(php的单例模式有什么具体好处具体在哪里实现面试的时候让人问到..求解)

本篇文章给大家谈谈php单例模式如何实现,以及php的单例模式有什么具体好处具体在哪里实现面试的时候让人问到..求解对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录

php的单例模式有什么具体好处具体在哪里实现面试的时候让人问到..求解

单例不只是PHP中有,是面向对象类语言都有的概念。
你说的是做用,是从语言层面上。只有一个实例。
我觉得面试官要问的是实际使用的含义,对于整个程序设计而言的好处。
我本身也不是什么高手,觉得我说的不对轻喷。
我也用过PHP的TP框架,但是用的很浅,没有体会到有什么特别的。
我说说java的spring框架,它的bean实例化是单例的,struts2也支持选择是否单例。
它能节约内存开销,这是最明显的,一个工具类,或者一个服务类,单例下,一个实例足够,并不需要创建N此,无故的浪费掉内存。
从设计上而言,一个只需要实例化一次就足够的类,设计为单例,这样可以做到从设计上而言更清晰

新手求助:php单例模式 问题如下

1、 private $conf = array; //这个的作用是什么?
这只是为了初始化一个属性罢了,等于什么不重要。NULL也可以,在下面的代码中它会被重新赋值。另外,如果希望初始值是数组的话,这样写是错的。应该是 = array();

2、$this-》conf = conf::getIns(); //这个属性可以访问getins(); 有什么作用
你这里应该还有另一个 class conf 吧。它只是调用另一个类的方法,取回结果并赋值到 $conf 上罢了(上面说过的)

3、$this-》connect($this-》conf-》host,$this-》conf-》user,$this-》conf-》pwd);//这个是不是把host,conf,pwd分别放在数组里...
把取回来的结果做为参数交给下面的方法。。这里从头到尾和数组一点关系也没有。只是最基本的变量传来传去罢了。

php如何实现的mongoDB单例模式操作类

class Mongo_db{ private static $cli; /** * 不允许初始化 */ private function __construct() { $config = Config::get(’config.mongo_config’); if(empty($config)){ $this-》throwError(’无法连接数据库!’); } if (!empty($config); } } /** * 单例模式 * @return Mongo|null */ public static function cli(){ if(!(self::$cli instanceof self)){ self::$cli = new self(); } return self::$cli-》mongo; }}$mongo = Mongo_db::cli()-》test-》mycollection;

请教一个问题.单例模式适用什么场景,不适用什么场景

  单例模式要点三:
  某类能实例;
  二必须自行创建实例;
  三必须自行向整系统提供实例
  复制代码 代码:
  《?php
  /* 单例模式举例,其要点:
  *
  * 1. $_instance 必须声明静态私变量
  * 2. 构造函数克隆函数必须声明私,防止外部程序 new 类失单例模式意义
  * 3. getInstance()必须声明公,必须调用返唯实例引用
  * 4. ::操作符能访问静态变量或静态函数
  * 5. PHP单例模式相言,PHP解释运行机制使每PHP页面解释执行所相关资源都收
  * 说PHP语言级别没办让某象驻内存PHP所变量都页面级论全局变量
  * 类静态员都页面执行完毕清空,结重新建立新象完全失Singleton意义
  * ,实际应用同页面能存业务逻辑,单例模式起重要作用,效避免重复
  * new 象(注: new 象消耗内存资源)行,所我说PHP单例模式相言
  *
  */
  class People
  {
  static private $_instance = NULL;
  public $height = ’’;
  public $age = ’’;
  private function __construct()
  {
  $this-》height = ’185’;
  $this-》age = 25;
  }
  private function __clone()
  {
  //do something
  }
  static public function getInstance()
  {
  if(!self::$_instance instanceof self)
  {
  //echo ’lgh-big’;
  self::$_instance = new self;
  }
  else
  {
  //for testing only
  //echo ’gdc-xiaoairener’;
  }
  return self::$_instance;
  }
  public function getHeight()
  {
  echo $this-》height;
  }
  public function getAge()
  {
  echo $this-》age;
  }
  }
  function testInstance()
  {
  People::getInstance()-》getAge();
  }
  //begin to use the class
  $lgh = People::getInstance();
  $lgh-》getHeight();
  echo ’
’;
  testInstance();
  ?》
  优点:单例模式避免量new操作每new操作都消耗内存资源系统资源
  缺点:PHP所变量论全局变量类静态员都 页面级每页面执行都重新建立新象都页面执行完毕清空似乎PHP单例模式没意义所PHP单例模式我觉 针单页面级请求现应用场景并需要共享同象资源非意义
  Why–要使用PHP单例模式
  PHP主要应用场合应用程序与数据库打交道应用场景所应用存量数据库操作比数据库句柄连接数据库行使用单例模式避免量new操作每new操作都消耗内存资源系统资源
  些抽象给代码片段
  使用传统式编码
  复制代码 代码:
  《?php
  ......
  //初始化数据库句柄
  $db = new DB(...);
  //比应用场景添加条用户信息:
  $db-》addUserInfo();
  ......
  //我另外能要查找用户信息情景现函数要用数据库句柄资源我能需要做
  ......
  function test(){
  ......
  //我重新初始化数据库句柄,试想应用场景代码怕啊
  $db = new DB(...);
  $db-》getUserInfo();
  ......
  //些朋友或许说我做啊我直接利用global关键字确global解决问题起单例模式作用OOP我拒绝编写代码global存安全隐患请参考相关书籍同单例模式恰恰全局变量种改进避免些存储唯实例全局变量污染命名空间
  global $db; //OOP我提倡编写代码
  ......
  }
  使用单例模式编码
  复制代码 代码:
  《?php
  ......
  //所应用情景数据库句柄资源嘿嘿效率高
  //资源节省代码简洁明:)
  DB::getInstance()-》addUserInfo();
  DB::getInstance()-》getUserInfo();
  ......
  How–何编写PHP单例模式
  解单例模式应用场景面我通编写单例模式具体实现代码掌握PHP单例模式核要点代码:
  复制代码 代码:
  《?php
  /**
  * PHP单例模式演示举例
  * @author guohua.li
  * @modify 2010-07-11
  * @website
  */
  class User{
  /**
  * 静态品变量 保存全局实例
  * @access private
  */
  static private $_instance = NULL;
  /**
  * 私化构造函数防止外界实例化象
  */
  private function __construct() {}
  /**
  * 私化克隆函数防止外界克隆象
  */
  private function __clone(){}
  /**
  * 静态, 单例统访问入口
  * @return object 返象唯实例
  */
  static public function getInstance() {
  if (is_null(self::$_instance) || !isset(self::$_instance)) {
  self::$_instance = new self();
  }
  return self::$_instance;
  }
  /**
  * 测试: 获取用户名字
  */
  public function getName() {
  echo ’hello liguohua!’;
  }
  }
  代码我总结PHP单例模式实现核要点三条:
  1.需要保存类唯实例静态员变量(通$_instance私变量)
  2.构造函数克隆函数必须声明私防止外部程序new类失单例模式意义
  3.必须提供访问实例公共静态(通getInstance)返唯实例引用
  PHP单例模式缺点
  众所周知PHP语言种解释型脚本语言种运行机制使每PHP页面解释执行所相关资源都收说PHP语言级别没办让某象驻内存asp.net、Java等编译型同比Java单例直存于整应用程序命周期变量跨页面级真做实例应用程序命周期唯性PHP所变量论全局变量类静态员都页面级每页面执行都重新建立新象都页面执行完毕清空似乎PHP单例模式没意义所PHP单例模式我觉针单页面级请求现应用场景并需要共享同象资源非意义

为什么要使用PHP单例模式及应用实例

单例模式顾名思义,就是只有一个实例。作为对象的创建模式,
单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类我们称之为单例类。单例模式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。下面我们讨论下为什么要使用PHP单例模式?多数人都是从单例模式的字面上的意思来理解它的用途,
认为这是对系统资源的节省,
可以避免重复实例化,
是一种"计划生育".
而PHP每次执行完页面都是会从内存中清理掉所有的资源.
因而PHP中的单例实际每次运行都是需要重新实例化的,
这样就失去了单例重复实例化的意义了.
单单从这个方面来说,
PHP的单例的确有点让各位失望.
但是单例仅仅只有这个功能和应用吗?
答案是否定的,我们一起来看看。1.
php的应用主要在于数据库应用,
所以一个应用中会存在大量的数据库操作,
在使用面向对象的方式开发时(废话),
如果使用单例模式,
则可以避免大量的new
操作消耗的资源。2.
如果系统中需要有一个类来全局控制某些配置信息,
那么使用单例模式可以很方便的实现.
这个可以参看zend
Framework的FrontController部分。

关于php单例模式如何实现,php的单例模式有什么具体好处具体在哪里实现面试的时候让人问到..求解的介绍到此结束,希望对大家有所帮助。

php单例模式如何实现(php的单例模式有什么具体好处具体在哪里实现面试的时候让人问到..求解)

本文编辑:admin

更多文章:


mariadb忘记密码(mysql用户密码忘记了怎么办)

mariadb忘记密码(mysql用户密码忘记了怎么办)

大家好,mariadb忘记密码相信很多的网友都不是很明白,包括mysql用户密码忘记了怎么办也是一样,不过没有关系,接下来就来为大家分享关于mariadb忘记密码和mysql用户密码忘记了怎么办的一些知识点,大家可以关注收藏,免得下次来找不

2026年10月15日 07:50

mysql端口号(如何查看自己数据库的端口号)

mysql端口号(如何查看自己数据库的端口号)

“mysql端口号”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看mysql端口号(如何查看自己数据库的端口号)!

2026年10月15日 06:30

printf打印16进制(C语言 十六进制怎么输出)

printf打印16进制(C语言 十六进制怎么输出)

大家好,今天小编来为大家解答以下的问题,关于printf打印16进制,C语言 十六进制怎么输出这个很多人还不知道,现在让我们一起来看看吧!

2026年10月15日 06:00

avantage怎么设置为中文(Avantage安装丢失GIT)

avantage怎么设置为中文(Avantage安装丢失GIT)

大家好,如果您还对avantage怎么设置为中文不太了解,没有关系,今天就由本站为大家分享avantage怎么设置为中文的知识,包括Avantage安装丢失GIT的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月15日 03:00

ospf协议的作用是什么(OSPF路由协议的作用是什么)

ospf协议的作用是什么(OSPF路由协议的作用是什么)

“ospf协议的作用是什么”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看ospf协议的作用是什么(OSPF路由协议的作用是什么)!

2026年10月15日 02:40

方案对比特效js(在一个网页中如何实现两个JS特效)

方案对比特效js(在一个网页中如何实现两个JS特效)

各位老铁们好,相信很多人对方案对比特效js都不是特别的了解,因此呢,今天就来为大家分享下关于方案对比特效js以及在一个网页中如何实现两个JS特效的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月15日 02:10

activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)

activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)

今天给各位分享登陆视频监控网页时提示activex控件未注册,怎么解决的知识,其中也会对登陆视频监控网页时提示activex控件未注册,怎么解决进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月14日 20:30

学生信息管理系统c语言(用C语言编程学生信息管理系统!)

学生信息管理系统c语言(用C语言编程学生信息管理系统!)

今天给各位分享用C语言编程学生信息管理系统!的知识,其中也会对用C语言编程学生信息管理系统!进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月14日 20:20

excel连接sql数据库教程(excel怎么连接sql数据库)

excel连接sql数据库教程(excel怎么连接sql数据库)

本篇文章给大家谈谈excel连接sql数据库教程,以及excel怎么连接sql数据库对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月14日 19:40

null s brawl(null和空字符有区别吗)

null s brawl(null和空字符有区别吗)

今天给各位分享null和空字符有区别吗的知识,其中也会对null和空字符有区别吗进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月14日 19:00

最近更新

热刺vs马赛比赛(热刺赛程比分)
2026-10-15 09:10:01 浏览:0
热门文章

标签列表