当前代码中,所有的模型类都是开发者手动实例化的,就好比你需要一辆汽车,还得自己制造一辆汽车
使用工厂模式,开发者不需要再手动创建类的对象,只需要向相关类(汽车制造厂商)要对象(汽车)即可
实现方式
在 framewok\core 下创建 Facotry 类
namespace framework\core;
class Factory
{
public static function M($classname)
{
static $model_list = [];
/**
* 为类名加上命名空间的原因在于前台和后台有同名的模型类
*/
$modelname = MODULE . "\\model\\" . $classname;
echo $modelname;
if (!isset($model_list[$modelname])) {
$model_list[$modelname] = new $modelname;
}
return $model_list[$modelname];
}
}
在控制器中只需要调用Factory 类中的 M 方法传入类名即可。当然需要在控制器类中引入工厂类的命名空间