php 组件类设计

预期情况,有些类在程序执行的过程中会在多个地方使用,但是我们希望这个类在内存中是持久化的,也就是在一次请求中只会被实例化一次,之后使用都是使用第一次初始化的对象,类似与java spring mvc 中 @Scope(“request”) 作用域的详解。 怎么办呢?php 内置为我们提供了很多的解决方案。这里我提供我的思路及解决方案,它完美的解决了我们在实际生产过程中会遇到的问题。

__init();
            }
            return self::$Objs[$class_name];
		}else{
			$target_obj = new $class_name();
			if(method_exists($target_obj,"__init"))
		        $target_obj->__init();
		        
			return  $target_obj;
		}	
	}
}

/**
 * 创建组件使用函数
 * 注解:关于组件地址的引用规则和类名和文件名的引用规则可以在这里做变化,这案例为测试,所及就比较偏简化
 */
function loadComponent($class_name)
{
	require("$class_name.php");//注意类文件名和文件内容中类名之间的关系
	return $class_name::getObject($class_name);
}

?>

组件对象的使用 Test.php

我被创建了

"; } public function __init() { echo "

我是组件内置构造函数

"; } public function getNname() { return "my name is tantong"; } } $test = loadComponent('Test'); $test1 = loadComponent('Test'); ?>

你可能感兴趣的:(php)