开始构建summer。伟大征程第一步
1.设计包。
参考了下其他框架,现在都是基于composer进行管理,而且各个包分的比较细。第一个版本简单点,设计3个包,server、manage、core,其中core包含net等公共的,等第一个版本开发出来了再进行拆包
由于summer的namespace已经被人注册了,改为suframe,同样的霸气,管他3721,先去把包坑占起
首先开发manage入手,根据前面的设计。
manage应该包含一个启动swoole http服务,websocket后面再说。考虑到可能和server公用,所以放到core/net,网络请求相关的全部丢进去
然后得有个命令行工具 console,然后一个命令行,一个net先跑起来,日志,实际等再慢慢添加
所以整个包的结构就成了vendor/suframe
core
console
manage
Core.php
server
Core.php
2.设计目录
先开发manage,业务代码放在app目录。
要提供一些接口给server用,比如注册,同步服务,监听事件等,所以得有个action目录
配置目录必不可少
启动脚本
所以基础目录就如下app
├── action
│ └── server
│ ├── Regist.php
│ ├── Search.php
│ └── Sync.php
├── config
└── manage.php
当然由于那些包还没有开发,先进行框架搭建,所以在根目录下新建了个目录suframesuframe/
├── core
│ ├── console
│ │ └── Console.php
│ └── net
│ ├── http
│ │ └── Server.php
│ └── tcp
│ └── Server.php
├── manage
│ ├── Core.php
│ ├── README.md
│ └── traits
│ └── Singleton.php
└── server
├── Core.php
└── README.md
来模拟包
然后在bin/bootstrap.php中添加下注册个命名空间$loader->addPsr4("suframe\\", __DIR__ . '/../suframe/');
ok.到此一个最简单的目录架构已经出来了。 剩下的事情就是填充代码让这个manage首先把http服务跑起来,完成转发。 然后编写注册的代码。
3.选型
第一步要运行命令行,额,没有个console工具是不太方便的,看了下swoft的toolkit/cli-utils。然后easyswoole干脆自己写了个。 如果啥都要自己写,这个想不知道啥时候能完成。 搜了下,先用着 https://github.com/inhere/php-console/blob/master/README_cn.md 这个吧,也是用了toolkit
4.开发
先开发manage
开发第一个文件肯定是入口文件,入口文件负责初始化自动加载和 初始化程序。 对比了下,个人还是喜欢easyswoole这种模式,简单明了. 所以新建bin/summer.php文件#!/usr/bin/env php
require_once __DIR__ . '/bootstrap.php';
(new \suframe\manage\Core())->run();
入口就应该保持简单
然后编写core代码
现在需要一个config组件读取分散的config文件,额,本来想用symfony/config,结果给我下了一堆包。选了下 ,还是用https://github.com/hassankhan/config吧