PHP 单例模式代码片段
<?php
error_reporting(E_ALL | E_STRICT);
class single{
public $hash;
static protected $ins = null;
final protected function __construct(){ //final 能被继承,不能被重写(防止子类重写构造方法)
$this->hash = mt_rand(1,9999);
}
static public function getInstance(){
if(self::$ins instanceof self){ //instanceof 判断某个对象是不是某个类的实例
return self::$ins;
}
self::$ins = new self();
return self::$ins;
}
}
$s1 = single::getInstance();
$s2 = single::getInstance();
var_dump($s1);
var_dump($s2);
//son类继承single类
class son extends single{
}
$s1 = son::getInstance();
$s2 = son::getInstance();
var_dump($s1);
var_dump($s2);
页面输出
object(single)[1]
public 'hash' => int 9762
object(single)[1]
public 'hash' => int 9762
object(single)[1]
public 'hash' => int 9762
object(single)[1]
public 'hash' => int 9762
主要思路:
1. 保护或者私有构造函数,防止外部实例化
2. 内部开放一个公共的静态方法,负责实例化
3. 类有一个静态属性,用于存放对象
当静态属性已经存放对象时,直接 return 该对象,否则实例化该类,然后 return 对象。
PHP 单例模式代码片段的更多相关文章
- sublimetext3中保存代码片段
在日常的开发工作中,不断重复上一次敲过的代码,有时确实感到伐木累."蓝瘦"(难受)."香菇"(想哭),大概表达的也是这样的心境吧!:grinning: 所以,在 ...
- Code Snippets 代码片段
Code Snippets 代码片段 1.Title : 代码片段的标题 2.Summary : 代码片段的描述文字 3.Platform : 可以使用代码片段的平台,有IOS/OS X/ ...
- 10个 jQuery 代码片段,可以帮你快速开发。
转载自:http://mp.weixin.qq.com/s/mMstI10vqwu8PvUwlLborw 1.返回顶部按钮 你可以利用 animate 和 scrollTop 来实现返回顶部的动画,而 ...
- 代码片段添加智能提示,打造一款人见人爱的ORM框架
SqlSugar ORM优点: 1.高性能,达到原生最高水准,比SqlHelper性能要高,比Dapper快30% 比EF快50% 2.支持多种数据库 ,sql版本更新最快,其它会定期更新,可以在多种 ...
- js/jquery/html前端开发常用到代码片段
1.IE条件注释 条件注释简介 IE中的条件注释(Conditional comments)对IE的版本和IE非IE有优秀的区分能力,是WEB设计中常用的hack方法.条件注释只能用于IE5以上,IE ...
- Visual Studio 如何使用代码片段Code Snippet提高编程速度!!!
使用Code Snippet简化Coding 在开发的项目的时候,你是否经常遇到需要重复编写一些类似的代码,比如是否经常会使用 for.foreach ? 在编写这两个循环语句的时候,你是一个字符 ...
- Visual Studio 的代码片段工具
当安装完Visual Studio之后,会有附带一些原生的代码片段文件(*.snippet),对于vs2013参考目录如下: X:\Program Files (x86)\Microsoft Visu ...
- sublime代码片段
创建方法:Tools > New Snippet 这时你会看到如下示例代码: <snippet> <content><![CDATA[ Hello, ${ ...
- sublime 添加代码片段(snippets)
1.工具-新代码片段(Tools -> New Snippet) 2. <snippet> <content><![CDATA[ if(\$rs && ...
随机推荐
- ajax(ajax开发与入门)
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术.AJAX是一种进行页面局部异步刷新的技术,局 ...
- 针对不同包之间的action跳转,怎么配置?
例如一下的例子:两个包,如何跳转 <struts> <constant name="struts.enable.DynamicMethodInvocat ...
- android 的四种枚举Context.MODE_PRIVATE
标签: mode_private Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加 ...
- Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现
转自:http://blog.csdn.net/droidphone/article/details/8074892 上一篇文章,我介绍了传统的低分辨率定时器的实现原理.而随着内核的不断演进,大牛们已 ...
- [杂]SQL Server 之 Understanding Connection Pooling and Transactions
A SqlConnection consists of two parts: the public instance that your code interacts with (the outer ...
- Oracle基本常用命令
一.ORACLE的启动和关闭 1.在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a.启动ORACLE系统 oracle>svrmgrl ...
- asp.net控件开发基础(1)(转)原文更多内容
asp.net本身提供了很多控件,提供给我们这些比较懒惰的人使用,我认为控件的作用就在此,因为我们不想重复工作,所以要创建它,这个本身便是一个需求的关系,所以学习控件开发很有意思. wrox网站上有本 ...
- node相关--socket.io
使用Socket.IO可以避免webSocket产生的问题: 传输: Socket.IO中消息的传递是基于传输的,而非全部依靠WebSocket; 它总会尝试选择对用户来说速度最快.对服务器性能来说最 ...
- sqlserver2008使用设置sa用户登录步骤
1.打开sql server 2008,使用windows身份验证. 2.成功登录后,点击安全性->登录名,“sa”右键选择属性,设置密码,勾选“强制密码实施策略”. 3.然后选择属性页下的“状 ...
- Prim POJ 2031 Building a Space Station
题目传送门 题意:给出n个三维空间的球体,球体是以圆心坐标+半径来表示的,要求在球面上建桥使所有的球联通,求联通所建桥的最小长度. 分析:若两点距离大于两半径和的长度,那么距离就是两点距离 - 半径和 ...