博客列表 >PHP-单例模式-0907

PHP-单例模式-0907

Bean_sproul
Bean_sproul原创
2018年09月18日 10:32:31785浏览

单例模式:

即一个类只被实例化一次,当其他人对其再次实例化时,便返回第一次实例化的对象。这种模式可以极大地节约资源。典型应用于数据库类的实例化。


实例

<?php 

/**
 * 单例模式
 即一个类只被实例化一次,当其他人对其再次实例化时,便返回第一次实例化的对象。这种模式可以极大地节约资源。典型应用于数据库类的实例化。
 */

//创建一个实用的配置类
class Config
{
	/**
     * 为什么要用静态的? 因为静态属性于类的,被所有类实例所共享;
     * 为什么要能实例初始化为null? 便于检测
     */

	private static $instance = null; //默认也是null,可以省略
	
	//实例化类时,会自动调用类的构造方法,因为将构造方法设置为private属性,限制为只能在类内部实例化
	//禁止从类的外部实例化对象
	private function __construct()
    {

    }
    //克隆方法也私有化
    private function __clone()
    {

    }

	//外部仅允许通过一个公共静态方法来创建实例
	public static function getInstance()
	{
		//检测当前的类属性$Instance是否已经保存了
		if (self::$instance == null) 
		{
			self::$instance = new self();
		}

		return self::$instance;
	}
}

$obj1 = Config::getInstance;
$obj2 = Config::getInstance;
var_dump($obj1,$obj2);
var_dump($obj1 === $obj2);
 ?>

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议