PHP的单例模式类写法

无意中看到一个所谓的"玩魔兽"学习PHP的设计模式的帖子,其中第一个就是所谓的"单价模式"(其实就是我们说的:Singleton class中文应该叫做'单例类').

 

名词解释:

Singleton_Class ['name' => '单例类'];

就是在整个程序运行生命周期内只能实例化一次的类.

 

PHP中的实现方法:(测试通过)

<?php
/**
 * 这是一个单例类,用来保存程序运行期间的数据.<br />
 * 这里体现了PHP的几个特殊的地方:
 * 1.构造函数可以用private,protected等限制访问符;
 * 2.在类的内部实例化自身,应该使用:new self(),而不是类的外部名称;
 *
 * @author Fonny
 *
 */
class SingletonModel
{
	private $_count_sm_instance = 0;
	/**
	 * SingletonModel的构造函数.<br />
	 * 可以加参数,但是同时也要在getInstance方法中添加同样的参数才能实现效果.
	 *
	 * @return SingletonModel
	 */
	private function __construct()
	{
		$this->_count_sm_instance++;
		$tl = new StudyTools();
		$tl->echoStr("SingletonModel instance count: " . $this->_count_sm_instance,false);
	}
	/**
	 * 仅子类可访问的本单例类的静态实例
	 * @var SingletonModel
	 */
	static protected $_instance = null;

	/**
	 * 获得SingletonModel类的全局唯一实例的唯一方法
	 *
	 * @return SingletonModel
	 */
	static public function getInstance()
	{
		if(self::$_instance === null)
		{
			self::$_instance = new self();
		}
		return self::$_instance;
	}
}
?>

 

<?php

require_once 'includes/singleton.class.php';

$sm = SingletonModel::getInstance();
$sm2 = SingletonModel::getInstance();

//只会得到同一个内存资源的引用
?>

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值