当前代码中,所有的模型类都是开发者手动实例化的,就好比你需要一辆汽车,还得自己制造一辆汽车

使用工厂模式,开发者不需要再手动创建类的对象,只需要向相关类(汽车制造厂商)要对象(汽车)即可

实现方式

在 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 方法传入类名即可。当然需要在控制器类中引入工厂类的命名空间

自定义MVC框架-工厂类

相关文章: