从零开始搭建自己的Swoole框架(序章)

开发目标及准备说明

这一篇不包含任何技术代码,如需要直接开始请阅读第(一)章。

前言

毕业三年,成为架构师!

这是我毕业时的梦想,结果没有实现。

现在重拾初心,从零设计一个属于自己的框架!

目标

按照目前市面上的发展来看,

swoole 毫无疑问是目前 PHP 的天花板,

而自己在工作的时候做的都是流水线,几乎没机会接触到 swoole。

于是趁这个机会也学习一下。

这次设计的框架以开发博客系统作为案例,

我们不考虑它的适用性,正如标题所写的一样,

这是属于自己的框架,

而不是 Laravel 那样可以单独发布的 composer 包。

所以最终我们会完成一个单体博客应用,

如果你要把自己的框架做成发布到全网让别人使用你的框架,

可以了解一下 composer 的扩展包是怎么制作的。

只要这套框架做完了,

你自己改造成可以用 composer require xxx/xxx 那样引入的也完全没问题。

准备工作

PHP 环境

本人使用的是 docker 环境,

window 系统也可以用 wamp、xampp 等等,

只要搭好 PHP 环境并且安装了 swoole 扩展就行了。

windows 系统安装 swoole 扩展比较麻烦,

如果你不会安装,可以在 windows 系统安装 docker,

然后再在 docker 里面安装 php 环境。

Swoole 扩展

Swoole 官方网站:swoole.com

swoole 其实是一个 php 扩展并不是框架,它跟 yaf 一样是基于内存常驻的。

swoole 依然还在保持着更新,yaf 却 N 年没更新了。

所以如果要学的话,强烈推荐 swoole 而不是 yaf。

Nginx

因为我们要做的是一个博客系统的单体应用。

Swoole 对静态文件的处理能力比较弱,

所以我们的目标是 swoole 做服务器,

静态文件交给 nginx 处理,

php 请求转发给 swoole。

单体应用是相对于微服务来说的,通俗的讲即整个项目就只有一个文件夹,而微服务则是把各个模块拆出来,比如用户模块、订单模块诸如此类,还可以把全站的 api 接口拆分出来当成一个项目(前后端分离)

MySQL

免费的数据库,除了这个还有 Mango,

但是我没用过,根据你个人兴趣选择即可。

Redis

免费的高性能包括键值对、哈希、集合列表等等处理器。

用来做缓存和队列任务,文章排行榜等等。

Composer

php 的包管理工具,现在的项目还是纯手撸那也太 lower 了。

我们在开发框架的时候,会像 Laravel 那样依赖一些第三方的包。

感觉好像有点作弊?

用 composer 就跟直接拿别人开发好的一样,

不是说好手撸框架么?

不用担心,开发框架最核心的是编程思想,

具体怎么实现,我相信大家看着源码也能模仿出来。

如果你愿意从写 MySQL 数据连接开始,那也没问题!

如果你要从最底层的代码开始写,

那么我建议你将数据库处理、上传组件、缓存处理、队列任务等等,

把这些都做成单独的 composer 包,

然后再在框架里引入自己写的 composer 组件包,

像拼积木一样,看起来很酷对吧!

这样一个高度定制化的框架就实现了。

我还真的试过这么做,但是做一个 composer 包就放弃了……

因为……工作量增加了好几倍。

很不现实,你做的越细,工作量就越大,

而我们自己一个人维护不过来,

所以不推荐一开始就有那么大的野心,

本篇文章要完成的目标仅仅只是一个单体博客应用而已,

甚至都不会把框架单独拆分出来(业务逻辑代码也混合在框架里)。

核心内容是开发框架的编程思想,而不是具体的实现。

IDE

用 PHPStorm 即可,当然也可以用微软的 VScode。

最终目标

在我们学习 PHP 的时候,

第一个开发的项目是什么?

我猜大部分人都是博客系统!

那么,三年前的我和三年后的我,

制作相同的一套系统会有什么差别呢?

用毕生(三年)的功力,来开发这套博客系统吧!

文章作者: 火烧兔子
文章链接: http://huotuyouxi.com/2021/02/04/my-swoole-framework-0/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 火兔游戏工作室