【PHP模式】用于生成对象的模式-单例模式

单例模式
通过提供自身共享实例的访问,单例设计模式用于限制特定对象只能被创建一次。

使用场景
例如数据库实例,一般都会走单例模式。
单例模式可以减少类的实例化

代码:来源InitPHP框架,先检测类有没被实例化,实例化了就使用已经存放在静态变量中的对象实例,没有则实例化并将对象保存起来。

/** 
 * 框架核心加载-框架的所有类都需要通过该函数出去 * 1. 单例模式 * 2. 可以加载-Controller,Service,View,Dao,Util,Library中的类文件 * 3. 框架加载核心函数 * 使用方法:$this->load($class_name, $type) 
 * @param string $class_name 类名称 
 * @param string $type 类别 
 */  
public function load($class_name, $type) {  
	$class_path = $this->get_class_path($class_name, $type);  
	$class_name = $this->get_class_name($class_name);  
	if (!file_exists($class_path)) InitPHP::initError('file '. $class_name . '.php is not exist!');  
	if (!isset(self::$instance['initphp'][$class_name])) {  
		require_once($class_path);  
		if (!class_exists($class_name)) InitPHP::initError('class' . $class_name . ' is not exist!');  
		$init_class = new $class_name;  
		self::$instance['initphp'][$class_name] = $init_class;  
	}  
	return self::$instance['initphp'][$class_name];  
}  

郑重声明:

1 本资源来源于互联网,资源的版权归资源原作者所持有,受《中华人民共和国著作权法》等相关法律保护。

2 由于无法和原作者取得联系,所以上传的部分资源无法先通过原作者的同意就分享给大家了,如本资源侵犯了您(原作者)的权益,请联系我们(微信号 xiaohaimei1989),我们会立马删除您的资源,并向您表达诚挚的歉意!

3 本站是一个公益型网站,分享资源的目的在于传播知识,分享知识,收取一点点打赏的辛苦费是用于网站的日常运营开支,并非用于商业用途。

4 本站资源只提供学习和参考研究使用,使用过后请在第一时间内删除。本站不承担资源被单位或个人商用带来的法律责任。

发表评论