写PHP框架需要具备那些知识?(php框架ci)
moboyou 2025-07-25 20:45 3 浏览
如果没用过框架,讨论各个框架的内容都没有可讨论性,想自己写个框架涉及到的内容很多,个人觉得自己写一个框架对自己的逻辑思维,开发架构以及这门语言都有质的提升。可以参照其他框架的源代码,仅仅是看他们的思路,去粗取精 。
简单的说,使用知名的产品,一般都是忙于实现,缺乏宏观意识,由此说来开发一个框架也是很正常的。也可以简单的路由分发,mvc分层。基本的架子搭起来后,逐步完善。在工作中,碰到只需要自己一个人来完成的一次性小项目,就可以试试自己的框架了。建议找几个简单的框架看看,个人推荐codergniter,算是结构最清晰的框架了。
别太早深入细节,类库、插件这些都是浮云,合理的架构规范最重要。要让大象跳舞,在功能强大的前提下,尽量的轻,别动不动引用一堆类,一堆配置文件。很多框架只能说是个类库其实很简单的东西。
首先确定你掌握了以下知识:
1.通过url传递和接受参数处理2.知道include的含义3.会echo和定义函数。
另外需要了解的知识有:
1 路由解析2 路由分配3 IoC4 数据库封装5 cache封装6 模版解析 文件cache
7 安全 xss sql注入8 http 操作9 图片操作 每一块都会展开很多的知识点。
很多人当听到别人要开发框架的时候第一想法就是,又重复造轮子。其实造轮子的过程是一个快速积累知识的过程,能较快的发现自己的不足,以及学到一些自己未发现的知识点。所以建议在有一定PHP基础的情况下,都去尝试完成一个五脏俱全的基本框架吧。
简单阐述造轮子的过程:
1. 尝试试用一个以上的框架,看完一遍使用文档,目的在于了解它都有哪些功能,发现他的一些比较好的用法设计;
2. 在看文档的同时并行的思考这一部分的实现原理,如果想不明白则记下来或者上Github去看源码(当然在不熟悉代码结构的情况下可能很难找,所以我建议还是先记下来);
3. 看它的项目结构,同时思考这个结构的意义,比如现在大部分框架都把入口文件与静态资源单独放到public目录里与其它目录分开的原因是什么;
4. 尝试看一遍源码的运行流程,从入口到输出,以及错误处理,模板引擎,配置等多个点了解一下(如果基础允许的话,在这过程中解决上面记下来的疑点吧);
5. 开始自己实现吧,先写一个大概的功能列表,把你要实现的点写出来;
6. 然后思考如果组织代码结构,在没有太多实践经验的情况下就按你最熟悉的方式组织吧(先实现再优化);
7. 先跑通基本的hello world!;
8. 一点点加功能;
9. 发现不足,改进并优化它;
这里在加功能的时候,尽量自己实现所有的能实现的组件,比如文件上传,错误处理等等,毕竟目的是实习知识。那么这过程其实走下来对于基础稍差的人来说可能会特别不顺利,那么没关系,遇到哪一个点卡住,先解决你对这个点的问题,快速补充知识再回来继续。
总结一些在造框架过程中通常会用到的一些点:
1. MVC
2. 自动加载: PHP: 自动加载类;
3. 错误处理:
http://php.net/manual/zh/book.errorfunc.php;
4. PHP标准库 (SPL)PHP: SPL - Manual;
5. 输出缓冲控制: PHP: 输出控制;
6. PHP 选项/信息:PHP:PHP 选项/信息;
7. 数据库抽象层:PHP: 数据库抽象层;
8. session拓展:PHP: Session 扩展;
9. 反射:
http://php.net/manual/zh/book.reflection.php;
10. 类和对象:PHP: 类/对象;
11. 图像处理和 GD:PHP: GD - Manual;
12. 邮件相关的SMTP;
13. 文件系统:PHP: Filesystem;
14. 预定义变量:PHP: 预定义变量;
15. 字符串处理:PHP: 字符串 - Manual;
15. 正则表达式:
http://php.net/manual/en/book.pcre.php;
基本的可能上面这些也足够了,虽然上面给的每一个链接都有很多内容,但是掌握常用的就好,可以结合搜索引擎去了解。
如果你想给框架加一些更巧妙的,或者更丰富的功能的话,这里还有一些知识点:
1. 常见的设计模式:工厂、单例,外观、观察者等;
2. 迭代器等预定义接口:PHP: 预定义接口;
3. 数据库拓展:PHP: 数据库扩展;
4. 国际化与字符编码支持 PHP: 国际化与字符编码支持;
5. 常用的缓存,Redis, Memcache,Apc等;
6. 队列服务如ActiveMQ,Beanstalkd等;
7. 多数据库支持如Mongo;
8. 事件与钩子;
另外还有一种创建框架的方式,不过这里用“创建”已经不太合适了,叫组合框架吧,那就是使用Composer基于开源组件拼装一个属于自己的框架。当然这里不建议新手这么干,这可能会让你在很多基础的东西上得不到锻炼。如果个人技术能力已经比较成熟了,目的在于快速开发项目的时候,用它绝对是利器。
P.S:最后推荐一些参考框架:
1. Slim Framework - 微框架,一个框架基本功能都满足了,很适合用于学习;
2. Silex - 微框架,基于Symfony2组件;
3. CodeIgniter - 结构很清晰的PHP框架;
另外这里还有一些教程可以参考,不过建议先自己尝试:
1. Write your own PHP MVC Framework (Part 1)
2. 使用PHP搭建自己的MVC框架
想了解更多PHP问题的找老师后盾网刘老师企鹅: 1455067020
看完不要跑记得出来吐吐槽!╰( ̄▽ ̄)╮
相关推荐
- 8个最好的WordPress缓存优化插件介绍2023
-
如果你的WordPress网站打开非常缓慢,它大大增加了访客离开的几率,毕竟没有多少人有这么多耐心。所以提高你的WordPress网站速度的一个好方法是使用WordPress的缓存插件。在这篇文章中,...
- WordPress插件依赖症晚期:为什么你的网站装了50个插件还能跑?
-
最近接手一个"插件博物馆"级别的网站——装了58个插件,首页加载8秒,后台卡到连发布文章都要念佛经祈求不报错。客户还一脸天真:"可是每个插件都说自己能提升性能啊!"插件...
- WordPress 网站缓存插件推荐:WP Rocket
-
WPRocket是WordPress的高级缓存插件。由于该插件仅是高级插件,因此非常注重高质量的支持。它背后的团队非常乐意帮助解决可能出现的任何疑问或问题。WPRocket的优点一键配置自...
- (合集)小众但好用的WordPress插件
-
还在犹豫什么?好运的机会稍纵即逝!赶紧关注我,一起开启幸运之旅吧!祝您财运亨通,心想事成!(合集)小众但好用的WordPress插件WordPress插件江湖:一场“小众”与“大众”的暗战老王,一位浸...
- WordPress外贸站插件大战:27个插件互相打架差点搞垮网站
-
今天遇到个奇葩问题,客户网站莫名其妙白屏了诡异现象:前台白屏,后台能进错误日志疯狂刷屏,1小时500MBCPU占用率飙到100%,服务器快冒烟了技术侦探过程:一查插件列表直接惊呆了!客户装了2...
- WordPress外贸站插件选择:别让插件“增肥”了你的网站
-
上个星期,一个做跨境电商的客户找我,问他站点咋回事,后台慢得要死,每个页面都加载几秒钟。他已经装了10多个插件,包括好几个外贸常见的支付、SEO、表单、社交分享插件。我一看后台,发现他装的插件里大多功...
- 7个最好的WordPress数据库优化插件
-
每个WordPress网站都有数据库,它包含了你网站上的所有信息,从用户数据到评论、文章等等。随着你的网站的增长,它的数据库也在增长,在许多情况下,你最终会储存大量的信息,远远超出了它的用途。这可能会...
- uniapp中使用ace在网页上做代码编辑器
-
A、安装npminstallace-buildsB、在uniapp中使用<template><viewclass="content"><...
- 视频下载工具,Downlodr软件体验(视频下载器android)
-
经常给大家分享软件,果核在后台也能收到很多朋友的许愿,想要找某一款软件,有没有更好的替代品等等,上周看到有朋友说想要一款下载器,用来下载油管上的内容。这类工具其实有挺多的,在网上搜索一下也能找到不少,...
- 2025年,几款视频制作软件让你轻松成为剪辑高手
-
在众多的视频制作软件中,万兴喵影以其强大的功能和易用性脱颖而出。它不仅支持多种格式的导入导出,还有丰富的模板与素材库,非常适合初学者和专业用户使用。除了万兴喵影,还有一些其他国外的视频制作软件也值得推...
- 为什么现在很多软件都基于Electron开发?
-
前段时间小白在聊到电脑内存这个玩意儿的时候,大部分小伙伴都表示:新电脑至少32GB运行内存起步。对于这个答案,小白并不否认。因为小白的电脑也是至少32GB起步的(但是因为兜里空空,所以没办法把常用的M...
- 前端黑科技:PWA,让网页像App一样好用
-
PWA是什么?想象一下:你的网页应用不用安装,却能像微信小程序一样秒开,还能离线使用、推送通知,甚至被用户添加到手机桌面——这就是PWA(渐进式Web应用)。Google在2016年推出的这项技术,让...
- 免费在线装柜软件哪家好用(在线装柜计算软件)
-
在出口行业,有一个常被忽视却影响巨大的环节——集装箱装柜规划。一旦方案失误,不仅导致出货延误、运输成本上升,甚至还可能造成货损或退运。对于习惯“凭经验装柜”的企业而言,货物越来越多样化、运输方式更加复...
- PakePlus:开源免费,一键打包网页为桌面与移动应用的神器
-
软件介绍该开源项目的功能非常简单,就是可以直接将网页打包成不同平台的程序,可以是应用也可以是app,非常适合一些站长但是不会创建app的情况。不过使用该软件进行站点打包之前你需要拥有一个github账...
- 如何对dedeCMS的开源程序进行二次开发
-
二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一般来说都不会改变原有系统的内核。为了让更多人了解二次开发,并更方便的了解DedeCMS的二次开发,下面将会...
- 一周热门
- 最近发表
- 标签列表
-
- 外键约束 oracle (36)
- oracle的row number (32)
- 唯一索引 oracle (34)
- oracle in 表变量 (28)
- oracle导出dmp导出 (28)
- oracle两个表 (20)
- oracle 数据库 字符集 (20)
- oracle安装补丁 (19)
- matlab化简多项式 (20)
- 多线程的创建方式 (29)
- 多线程 python (30)
- java多线程并发处理 (32)
- 宏程序代码一览表 (35)
- c++需要学多久 (25)
- css class选择器用法 (25)
- css样式引入 (30)
- css教程文字移动 (33)
- php简单源码 (36)
- php个人中心源码 (25)
- php小说爬取源码 (23)
- 云电脑app源码 (22)
- html画折线图 (24)
- docker好玩的应用 (28)
- linux有没有pe工具 (34)
- mysql数据库源码 (21)