今天在做东西的时候发现这个情况,就是我们用__autoload的时候,对于系统的开销还是比较大的,而且不能保证的是内存的开销,我们知道,创建一个对象是要付出很大代价的,然后我今天看了看phpcms的实现,然后感觉不错,拿出来改造了一下成为了这个自动加载的静态类,能够做到对象的复用,有效的减少内存的开销!下边是代码!仅供参考!

<?php 
/*
 *@author        widuu
 *@createtime    2013-7-4
 *@description   借鉴了phpcms的类自动加载模式 自己重新封装成了这个类 能够有效的减小内存的开销
 *
 */
class autoload{

	private function __construct(){}
	
	public static function auto_load($classname,$path="",$init=1){
		return self::load_class($classname,$path,$init);
	}

	private static function load_class($classname,$path='',$init=1){
		$classes = array();
		if(empty($path))
		{
			$path = dirname(__FILE__);
		}
		$key = md5($path.$classname);
		if(isset($classes[$key])){
			if(!empty($classes[$key]))
			{
				return $classes[$key];
			}else{
				return true;
			}
		}

		if(file_exists($path.DIRECTORY_SEPARATOR.$classname.".class.php")){
			include $path.DIRECTORY_SEPARATOR.$classname.".class.php";
		}

		$name = $classname;

		if($init){
			$classes[$key] = new $name;
		}else{
			return true;
		}
		return $classes[$key];
	}

   public function __clone()
   {
        trigger_error('Clone is not allowed.', E_USER_ERROR);
   }
}

$a = autoload::auto_load("nihao");
$a->show();

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部