PHP MVC框架开发之工厂注册类
3年前
该类作用于实例化类的时候只会实例化一次(理论是这样,实际还没有测试)
<?php
namespace xm;
/*
工厂注册类
作用于类的实例化出来防止重复实例化
*/
class gc{
//声明一个受保护的静态变量存储对象信息
protected static $object;
//创建一个静态方法
//$gc 要实例化的对象信息
//$del true为创建实例化,false为删除数组中的对象信息
public static function run($gc="",$del=true){
//转义字符
$gc =htmlspecialchars($gc);
if($del == true){
//判断变量是否为空值
if (!empty($gc)){
//判断是否为空值
if (!self::get($gc)){;
//实例化一个类
$duix = new $gc();
//通过该方法添加上面实例化出来的对象到一个数组中进行存储
self::set($gc,$duix);
//通过该方法可以从数组中获取到相关对象的信息
return self::get($gc);
}else{
//通过该方法可以从数组中获取到相关对象的信息
return self::get($gc);
}
}else{
echo exit("工厂注册类的run方法的参数不要为空值");
}
}else{
self::del($gc);
}
}
//设置对象到一个数组中
public static function set($gc,$object){
self::$object[$gc] = $object;
}
//获取数组中的对象信息
public static function get($gc){
return self::$object[$gc];
}
//删除一个对象信息
public static function del($gc){
unset(self::$object[$gc]);
}
}
使用方法(注意:一般和自动加载类用)
xm\gc::run('这里填写需要实例化的类(例如:xm\url)');