页面载入中,请稍后...

点我安装PWA
您已拒绝通知
    广告广告

    【开发属于自己的php框架(框架工作流程以及分类详谈)】

    qaq卟言2021-02-12 14:25:24 PHP
    小人奔跑效果开始
    • 市面上已经有许多优秀的框架比如LaravelSymfonyCakePHPYiiThinkPHP等等
    • 为什么开发属于自己的php框架?为什么不用现成的呢
    • 其实这是一个快速积累知识的过程,可以快速发现自己的不足,以及学到一些自己未发现的知识点
    • 并且我这样可以完全控制自己写的框架,并将自己的想法加入到开发的框架中
    • 比如添加功能的时候,需要自己实现所有的能实现的组件,比如文件上传,错误处理等等
    • 肯定是比不上一些主流的框架的,但是可以按照自己想法去开发功能和模块
    • 其实无论从结构、思考还是思考上,编出主流框架的他们才是真正的大师,我自己开发的框架只是一个垃圾
    • 但至少通过编写框架至少有了自己的思考,提高自己的创造力以及独立思考的能力,可以认识大量的内置函数
    • 运行别人框架时候不是这边有问题就是那边出现了错误,修复完成一个又出现一个
    • 以前只想着如何使用它,如何将别人的程序整合到自己代码上,也就是复制别人的代码,时间长了,别人框架的类都不清楚
    • 于是开始查看网上的教程看一下框架的组成跟工作流程来自己编写
    • 刚开始写一个数据库配置函数到数据库连接,再到数据库的封装,以及后面的数据库引用,再到前端页面模板的编写
    • 后面实现模板的页头页脚分类,然后又编写控制器的请求截取,再到静态文件的分类
    • 比如2020年12月9号实现的分离jscss,当然后面也把大量引入所有js文件
    • 变成了通过接口给每一个不一样的页面引入自己需要的文件
    • 使用 PHP 引用多个 CSS 和 JavaScript 文件1.png
    • 也就是不用这种方法来进行引用了,因为毕竟,有一些页面根本不需要这一些js或者css
    • 这样子又浪费http请求数,又延迟页面的加载速度
    • 开发属于自己的php框架(框架工作流程以及分类详谈)1.png
    • 例如文章索引页就引入分页jscss样式,文章详情页就引用阅读时间计算,字数统计等
    • 后面也就是在修复各个程序相互调用的优化,使其相互之间工作更加协调,不得不说开发自己的一个框架真的是又疲惫且又开心
    • 当然开发一个自己的框架也是荒废大量时间精力,同时也得到不少知识
    • 一些朋友也知道我也挺喜欢玩游戏的,为此我还为自己搭建了蛮荒极地的公益服,比如饥荒,我的世界
    • 说真的没开发框架之前,我基本上,放假或者休息都会在游戏服务器内玩耍
    • 哪怕是只有我一个人在游戏内,我也可以通宵玩一晚上,编写框架后基本上就没什么时间玩了
    • 每天下完班,回到家已经是精疲力尽,然后又编写框架中各个程序,一边编写一边摸鱼
    • 编写框架如果有大量时间或者一个团队可能就开发速度快了,现在我再来说一下框架的基本内容跟运行方式
    • 由于我是拿自己开发的框架跟网上查询的资料来解释的,所以就不写出详细的代码介绍了
    • 毕竟的写的代码漏洞百出,很多地方程序可以运行但是就是报错
    • 所以我使用了一个非常非常懒人的方法就是用php的万能屏蔽法error_reporting(0);,只要我看不见就是没问题
    • 如果写出来,我怕自己的网站有可能又会被别人攻击,我会笼统的解释一下我框架的程序分类,每个程序执行的工作以及每个程序类型的介绍
    • 框架一般拥有以下这几个分类目录
    • 应用代码
      程序配置或数据库配置
      框架核心目录
      静态文件
      临时数据目录
      命令行工具
    • 在目录设置好以后,我们接下来就需要一个程序拥有一个单一的入口
    • 除静态程序,其他所有程序都重定向到index.php上,这样子可以生成利于SEOURL
    • 入口文件内容为
    • 应用的目录
      网站根URL
      框架
    • 入口文件不要添加PHP结束符号?>,这样子可以很大程度上防止末尾被添加额外的注入内容,让程序更加安全
    • 在 入口文件 中,我们对框架文件夹下的框架发起了请求
    • 那么框架应该包含的内容为
    • 初始化常量
      包含配置文件
      包含核心框架类
      实例化核心类
    • 配置文件主要作用是设置一些程序的配置项及数据库连接,内容并不多,只是一些基础数据库的设置
    • 框架入口文件文件内容为
    • 路由处理
      通过获取控制器名执行任务
      通过获取URL参数传达需要内容
      然后就是一些判断了,判断数据是否为空,控制器存和动作存不存在,过滤敏感字符
    • 控制器文件内容为
    • 构造函数,初始化属性,然后分配变量渲染视图过滤敏感字符
    • 模型文件内容为
    • 连接数据库判断数据库表名与类名一致
    • 模型文件又需要接口来对数据库进行处理,也就是数据库基类
    • 文件内容为
    • 连接数据库
      删除添加查询修改搜索数据库字段
    • 视图模板就是前端渲染显示,比如页内容文件,页脚文件
    • 视图模板又包括页头页脚模板
    • 页头模板输出以下的<body>内容,包括</head>jscss的调用
    • 页脚模板输出以上的</html>内容,页脚的信息显示,比如什么联系方式呀,版权所有呀,包括</body>js,脚本执行的内容
    • 后面就是应用测试了,测试你写的代码有没有生效,比如测试前查看前端显示有没有问题
    • 部署数据库后,数据库执行删除记录,修改记录,查询记录,添加记录,有没有问题
    • 各部分的工作内容为
    • 模型
    • 管理大部分的业务逻辑和所有的数据库逻辑
    • 控制器
    • 负责响应用户请求、准备数据,以及决定如何展示数据
    • 视图
    • 负责渲染数据,然后呈现给用户
    • 框架流程为
    • 控制器截获用户发出的请求,然后调用数据库基类模型完成状态的读写操作,再把数据传递给视图,视图渲染最终结果并呈献给用户
    • 懒得写了,就先写这么多罢了,闲的蛋疼再补充了,还是先去修复我框架的漏洞算了
    完结

    🔖本文来源:qaq卟言的个人博客网站声明如损害你的权益请联系我们

    ©️版权声明:本文为【qaq卟言】原创文章,写作不易,转载请您添加本文链接,谢谢您的合作!

    📜著作协议:《知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

    ⚠️部分文章图片来自网络,可能存在版权问题。如发现相关争议请联系qaq卟言处理!

    🔗

    广告广告

    随机文章

    该文章已经关闭评论,评论请前往留言信箱