常用的一个小工具类吧,为已经使用过的PHP类建立一个实例,也可以防止代码重复加载。
PHP代码
- class NSingleton
- {
- static $instance;
- static public function get($className, $autoInit = true) {
- if (!$className || !is_string($className)) {
- require_once ('Empty.php');
- return new NEmpty(); // or return false;
- }
- self::set($className, $autoInit);
- return self::$instance;
- }
- static protected function set($className, $autoInit = true) {
- if (isset(self::$instance[$key]) && self::$instance[$key] != false) {
- return;
- }
- if (!class_exists($className)) {
- try {
- $classFile = sprintf('%s.php',$className);
- require_once( substr($classFile, 1) ); //remove 'N'
- } catch (Exception $e) {
- trigger_error('class file not exists');
- self::$instance[$key] = false;
- }
- }
- $instance = new $className;
- if ($auoInit && method_exists($instance, 'init')) {
- $instance->init();
- }
- self::$instance[$key] = $instance;
- }
- }