README.md 3.7 KB

mymvc

从零建MVC框架

框架简单思路

  1. 接收,打印参数想怎么弄。如 获取配置文件的方法,根据传过来的参数 构想

  2. 一般都是先判断文件是否存在。存在就该include就include,该new就new。然后做存到属性中(做缓存)

  3. 主要是调用流程:都什么需要放到run方法中

具体过程

一 框架启动文件(start.php)

  • 1.定义全局常量(define)(包括环境常量)
  • 2.注册自动加载
  • 3.调用 run 方法

二 路由文件(Route.php)

  • 解析 url 获取 model, controller, action 将多余部分转入 get 参数

三 加载配置文件

  • 目前只用框架的config.php 未开始模快配置文件, Config 有静态 set 方法可以添改设置

四 找到controller 并实例化, 调用方法

五 处理并输出结果

  • 使用 Response 类处理输出结果 > 以上就是该简单框架运行过程, 还没有添加日志, 数据库等过程, 这些后面再慢慢加

框架开发文档

目录结构

初始的目录结构如下:

www  WEB部署目录(或者子目录)
├─application           应用目录(可以更改)
│  ├─module_name        模块目录
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  └─view            视图目录
├─daswork               框架系统目录
│  ├─main               框架类库目录
│  │  ├─common          公共函数库
│  │  ├─db              数据驱动库
│  │  ├─response        响应类库
│  │  ├─App.php         项目运行类
│  │  ├─Config.php      设置类
│  │  ├─Controller.php  控制器类
│  │  ├─Loader.php      加载类
│  │  ├─Model.php       模型类
│  │  ├─Response.php    响应类
│  │  ├─Route.php       路由类
│  │  ├─Session.php     session类
│  │  ├─SqliteModel.php Sqlite类(后面会合并移数据驱动库)
│  │  └─View.php        视图类
│  ├─config.php         框架惯例配置文件
│  ├─helper.php         助手函数文件
│  ├─service.php        PHP web service 处理url,  实现'mod_rewrite'功能
│  └─start.php          框架入口文件
├─public                WEB目录(对外访问目录)
│  ├─favicon.ico        图标
│  └─index.php          入口文件
├─extend                扩展类库目录
├─runtime               应用的运行时目录(可写,可定制)
├─vendor                第三方类库目录(Composer依赖库)
├─build.php             自动生成定义文件(参考)
├─composer.json         composer 定义文件
├─LICENSE.txt           授权说明文件
├─README.md             README 文件
├─start.bat             项目启动脚本(win)
├─start.sh              项目启动脚本(unix)

项目可以使用php 内置的web service, 需要 path_info, 参考 laravel 的方法

$uri = urldecode(
    parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
);

// 这个文件允许我们从内置 PHP web 服务器中模拟 Apache 的 "mod_rewrite" 功能.
// 这提供了一种测试 Laravel 应用程序的便捷方法,
// 而无需在此安装"真正的" web 服务器软件。
if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
    return false;
}

require_once __DIR__.'/public/index.php';

启动脚本

cd ./public
php -S localhost:8000 ../daswork/service.php

框架类库(\daswork\mian)

App.php

主要是 run 方法: 新建路由对象 找到控制器 执行方法 输出结果

graph LR
A[方形] -->B(圆角)
    B --> C{条件a}
    C -->|a=1| D[结果1]
    C -->|a=2| E[结果2]
    F[横向流程图]

Config.php