简单mvc框架核心笔记

简单mvc框架核心笔记

看了thinkphp5的源码,模仿写了一个简单的框架,有一些心得笔记,记录一下

1.目录结构

比较简单,没有tp那么复杂,只是把需要的核心类写了一些。

核心类库放在mykj里,

 2,生命周期,执行流程

  入口文件自然是public里的index

  index里引入start.php,

  start.php中引入base.php,并且执行主程序

  base.php中执行自动加载,文件注册机制,注册错误机制等

3,主程序如果实现从url到页面输出

  基本的逻辑是,从url里获取到PATH_INFO,再根据‘/’截取到具体模块,控制器和方法的值,有路由机制的时候,需要读取路由里相应的配置。

  然后加载相应app中的控制器,执行相应的方法,控制器中用assign来赋值变量,fetch来输出模板。

 4,各个阶段的主要程序

  1.自动加载机制

  主要用了spl_autoload_register,php自从有了命名空间功能,自动加载就变得简单明了。使用spl_autoload_register函数加上需要自动加载执行的方法,就实现了类的自动加载。

  spl_autoload_register($autoload ?: 'mykj\\Loader::autoload', true, true);

  

  2.寻找url里对应的模块,控制器和方法。

  这里截取url比较简单,获取路由用到了正则,这里不再陈述,说一下核心生产控制器实例的方法

  生产类的对象,实例化

  

  执行方法

  

  ReflectionClass和ReflectionMethod这两个php系列函数,一般不经常用,只有在写这种框架的时候会用到,他们都是可以传入变量执行实例化类的一系列方法。

  3.模板输出功能

  模板输出的简单版逻辑是,通过assign赋值变量,fetch指定相应模板,核心view类加载模板,正则替换模板中的标签,然后生成缓存php文件,最后输出。

  这里有个很方便的函数extract,可以将数组中的key做变量,值做值,方便assign赋值。

  // 模板阵列变量分解成为独立变量
  extract($this->data, EXTR_OVERWRITE);//变量替换

 以上便是简单tp5mvc框架的逻辑,tp5中每个阶段有许许多多其他的功能,向中间件、钩子等等功能,都需要更细致的学习。

 

posted @ 2019-06-03 14:02  咫尺灵犀  阅读(221)  评论(0编辑  收藏  举报