今天在做东西的时候发现这个情况,就是我们用__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();
发表评论 取消回复