Heim  >  Artikel  >  Backend-Entwicklung  >  想要开发自己的PHP框架需要那些知识储备?

想要开发自己的PHP框架需要那些知识储备?

WBOY
WBOYOriginal
2016-06-17 08:30:27871Durchsuche

回复内容:

很多人当听到别人要开发框架的时候第一想法就是,又重复造轮子。
其实造轮子的过程是一个快速积累知识的过程,能较快的发现自己的不足,以及学到一些自己未发现的知识点。所以建议在有一定PHP基础的情况下,都去尝试完成一个五脏俱全的基本框架吧。

那么下面分享一下我之前造轮子的过程吧:

1. 尝试试用一个以上的框架,看完一遍使用文档,目的在于了解它都有哪些功能,发现他的一些比较好的用法设计;
2. 在看文档的同时并行的思考这一部分的实现原理,如果想不明白则记下来或者上Github去看源码(当然在不熟悉代码结构的情况下可能很难找,所以我建议还是先记下来);
3. 看它的项目结构,同时思考这个结构的意义,比如现在大部分框架都把入口文件与静态资源单独放到public目录里与其它目录分开的原因是什么;
4. 尝试看一遍源码的运行流程,从入口到输出,以及错误处理,模板引擎,配置等多个点了解一下(如果基础允许的话,在这过程中解决上面记下来的疑点吧);
5. 开始自己实现吧,先写一个大概的功能列表,把你要实现的点写出来;
6. 然后思考如果组织代码结构,在没有太多实践经验的情况下就按你最熟悉的方式组织吧(先实现再优化);
7. 先跑通基本的hello world!;
8. 一点点加功能吧;
9. 发现不足,改进它;

这里在加功能的时候,尽量自己实现所有的能实现的组件,比如文件上传,错误处理等等,毕竟目的是实习知识。
那么这过程其实走下来对于基础稍差的人来说可能会特别不顺利,那么没关系,遇到哪一个点卡住,先解决你对这个点的问题,快速补充知识再回来继续。

总结一些在造框架过程中通常会用到的一些点吧(以下排列没有先后顺序):

1. MVC
2. 自动加载: PHP: 自动加载类;
3. 错误处理:php.net/manual/zh/book.;
4. PHP标准库 (SPL)PHP: SPL - Manual;
5. 输出缓冲控制: PHP: 输出控制;
6. PHP 选项/信息:PHP:PHP 选项/信息;
7. 数据库抽象层:PHP: 数据库抽象层;
8. session拓展:PHP: Session 扩展;
9. 反射:php.net/manual/zh/book.;
10. 类和对象:PHP: 类/对象;
11. 图像处理和 GD:PHP: GD - Manual;
12. 邮件相关的SMTP;
13. 文件系统:PHP: Filesystem;
14. 预定义变量:PHP: 预定义变量;
15. 字符串处理:PHP: 字符串 - Manual;
15. 正则表达式: php.net/manual/en/book.;

基本的可能上面这些也足够了,虽然上面给的每一个链接都有很多内容,但是掌握常用的就好,可以结合搜索引擎去了解。

如果你想给框架加一些更巧妙的,或者更丰富的功能的话,这里还有一些知识点:

1. 常见的设计模式:工厂、单例,外观、观察者等;
2. 迭代器等预定义接口:PHP: 预定义接口
3. 数据库拓展:PHP: 数据库扩展;
4. 国际化与字符编码支持 PHP: 国际化与字符编码支持;
5. 常用的缓存,Redis, Memcache,Apc等;
6. 队列服务如ActiveMQ,Beanstalkd等;
7. 多数据库支持如Mongo;
8. 事件与钩子;

另外还有一种创建框架的方式,不过这里用“创建”已经不太合适了,叫组合框架吧,那就是使用Composer基于开源组件拼装一个属于自己的框架。当然这里不建议新手这么干,这可能会让你在很多基础的东西上得不到锻炼。如果个人技术能力已经比较成熟了,目的在于快速开发项目的时候,用它绝对是利器。

最后推荐一些参考框架:

1. Slim Framework - 微框架,一个框架基本功能都满足了,很适合用于学习;
2. Silex - 微框架,基于Symfony2组件;
3. CodeIgniter - 结构很清晰的PHP框架;

另外这里还有一些教程可以参考,不过建议先自己尝试:

1. Write your own PHP MVC Framework (Part 1)
2. 使用PHP搭建自己的MVC框架

--- 2015.02.28补充---
看了楼下各位的回答,发现大家都跑题了,题意是“需要那些知识储备?” 而不是“怎样完成一个框架”,完成框架的方法N种,而且按楼下某些的答案,完成了也学不到啥,甚至为啥这样就可以作为一个框架运行了,中间的原理都不懂,所以请慎重回答以免误导别人。 其实很简单的东西。
首先确定你掌握了以下知识:
1.通过url传递和接受参数处理
2.知道include的含义
3.会echo和定义函数。

OK,开始
首先,我们先来写一个php文件index.php,让我们可以通过GET参数的不同来运行不同的函数。
<code class="language-text"><?php function run_it()
{
  $function_name=$_GET['fn'];
  $function_name();//通过fn参数来运行函数
}
run_it();
</code></code>
学会composer ,看这个系列。
利用 Composer 一步一步构建自己的 PHP 框架phphub.org/topics/159

其实前面的人已经说的很清楚了,

你这想法我曾经也经历过,简单的说,使用知名的产品,一般都是忙于实现,缺乏宏观意识,由此说来开发一个框架也是很正常的。

我当时也开发了一个,其实我考虑的没楼上说的这么多,

就是简单的路由分发,mvc分层。基本的架子搭起来后,逐步完善。

在工作中,碰到只需要自己一个人来完成的一次性小项目,就可以试试自己的框架了。

建议楼主找几个简单的框架看看,个人推荐codergniter,算是结构最清晰的框架了。

之前看帮助等,算是学者用laravel 5.0开发了一个小应用,但是还是觉得缺乏自信,感觉对这个框架还是缺乏认识和了解,我是学java的,但是看到这个框架这么火就试了下.

问题:

喜欢PHP,想学精通PHP和laravel,这样的话就必须要从基础学起,自己写个框架才可以的吗? 如果你没写过框架,讨论各个框架的内容都没有可讨论性
最终写了一个框架出来,框架涉及到的内容很多,个人觉得自己写一个框架对你自己的逻辑思维,开发架构以及这门语言都有质的提升。自己写的过程中做了两版,参照了ci tp yii 三个框架的源代码(仅仅是看他们的思路,去粗取精),整个做下来博客写了将近20多篇

正题:
需要知识
1 路由解析
2 路由分配
3 IoC
4 数据库封装
5 cache封装
6 模版解析 文件cache
7 安全 xss sql注入
8 http 操作
9 图片操作
10 等等 很多
每一块都会展开很多的知识点

最后:自己写的框架
fantiq/phpframework · GitHub 正在做这个事情,不过比较菜。有兴趣我们可以相互学习(*^__^*) 涨姿势了 别太早深入细节,类库、插件都是浮云,框架框架,合理的架构规范最重要。
要让大象跳舞,在功能强大的前提下,尽量的轻,别动不动引用一堆类,一堆配置文件。
很多框架只能说是个类库
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn