Github: https://github.com/phwoolcon
简介: https://github.com/phwoolcon/bootstrap/blob/master/README-zh.md
一开始目的是打算做一个高性能的两栖框架(兼容 php-fpm 和守护进程模式),后来顺带解决了模块化和简化 composer 部署的问题。
目前公司内部新项目都在使用这个框架进行开发。
由于文档严重欠缺,思路也还没有完全定型,来这里骗 star 实在有点不好意思。
1
abc123ccc 2017-03-23 09:09:15 +08:00
用的是 phalcon 的那个版本????
|
2
sagaxu 2017-03-23 09:28:53 +08:00 via Android
swoole 可以升级到 2.0 了,自带 coroutine
|
3
assad 2017-03-23 09:40:11 +08:00
复杂要死,最好是开箱即用把。还得弄半天,结果感觉也不是很好
|
6
assad 2017-03-23 10:39:28 +08:00
@sagaxu PHP 的解决方案也不赖。 Go 呢,现在是啥都有,感觉开发 Web 还是 PHP ,对于个人开发者,小型企业首选。
|
7
Fishdrowned OP @abc123ccc 从 phalcon 2.0 开始开发,一路跟随 phalcon 版本升级,单元测试用的是最新版本( 3.0.4 ), 2.0 现在没做测试,应该也支持吧……
|
8
Fishdrowned OP |
9
Fishdrowned OP @sagaxu 不过对协程,我是只知其一不知其二,还不敢用。
|
10
vus520 2017-03-23 11:15:39 +08:00
只想要一个独立的协程实现,可以简单在现有业务中使用,不需要换框架装扩展
|
11
Fishdrowned OP @assad
因为要执行“模块化”的理念,还要方便跟进版本,不更改框架目录结构,也不碰 composer.json ,所以我引用了 `wikimedia/composer-merge-plugin`,割裂了工作目录和真正的项目代码仓库(因为我把项目作为一个 composer 组建引进来),使得整个架构变得复杂。 后面我会增加一些工具,尽量做到开箱即用,至少初始化、创建本地 composer 仓库,不用那么多手动操作。 |
12
Fishdrowned OP @vus520 我对协程还不得要领,欢迎分享!
|
13
maxincai 2017-03-23 11:51:36 +08:00
这个模块化的方式很特别,非常受启发,感谢。
|
14
Fishdrowned OP @maxincai 是的,这点是我误打误撞中想到的办法(看到有赞,正在洋洋得意中)
|
15
Fishdrowned OP 说个题外话,关于单元测试的。
我是从这个框架开始认真做单元测试的,感觉测试的好处其实不在于测试本身,而是你要迫使自己写出可测试的代码时,这个过程会让你重新组织你的思路,对自己要做的事情,对业务逻辑会有更清晰的认识。 |
16
sagaxu 2017-03-23 12:54:29 +08:00
@assad 现在已经没有比较纯粹的 web 项目了,页面的生成往往由客户端完成,服务端只负责 API 和吞吐数据。从开发效率,和生态上看, PHP 已经不是首选了, python 更胜一筹, rails 的开发效率更高。 Java 框架也在进化,有了 spring boot 之后,简化了很多,加上静态语言的 IDE 能力,开发效率也得到了极大的提高。当下, Go 语言也是非常不错的选择了。
|
17
DrenA 2017-03-23 18:44:58 +08:00
phalcon 是个巨坑,可能比 lumen 还大,要慎重
|
18
Fishdrowned OP |
19
zjsxwc 2017-03-23 21:26:02 +08:00 via Android 1
phalcon 除了性能和相对使用简单,其它就是半吊子的 DI ,半吊子的模板引擎,半吊子的 ORM ,坑略多。
DI 没有实现自己的配置表达式,本来配置新类替换老类,只需要一行 yml , phalcon 需要手写 PHP ,容易出错。 volt 模版引擎不知道现在有没有实现安全沙盒、局部 render 等功能,体验就是个阉割版的 twig ,不如直接用 twig 。 ORM 不知道现在能否通过类 annotation 自动生成到数据库中,自动把数据库表状态映射到类代码中,数据迁移 migration 当时我用的时候也没提供。 到后期项目膨大后,维护起来还是有点苦恼的,什么都是半吊子, feature 说起来都有,但用起来没有老牌的专业,反正我当时做完项目后就不想用了。 支持 swoole ,比我以前手撸 libevent 好多了 大大提高生产力。 |
20
Fishdrowned OP @zjsxwc 非常感谢分享!我不擅长归纳总结,看到你说的是眼前一亮!
你遇到的问题我基本上也遇到了,我也说一下感受。 DI 我倒是喜欢用 php 来配置,用 ::class 关键字写类名,可获得 IDE 自动完成加持,反而不容易错。例如替换 User 类: use Phwoolcon\Model\User as PhwoolconUser; use My\Project\Model\User as MyUser; // Inject front user model $di->set(PhwoolconUser::class, MyUser::class); 模板我直接用 php 。 ORM 的数据表字段和对象属性映射,我是反过来,从数据表里面读出来然后生成的,放在一个 ModelTrait 里面( https://github.com/phwoolcon/phwoolcon/blob/master/bin/update-phwoolcon-package-resource#L189 )。 phalcon 的 console 不敢恭维,我是用了 symfony 的。 migrate 是仿照 laravel 的那一套自己开发的。 config 也是仿照 laravel 那一套,做了 environment config ,然后增加了 override config 和 db config 。 |
21
hhxsv5 2018-01-31 15:52:00 +08:00
赞!
本人也在造这类的轮子,通过 Swoole 来加速 Laravel/Lumen。有兴趣可以尝试与探讨。 |
22
hhxsv5 2018-01-31 15:54:08 +08:00
Laravel 具有高开发效率,分分钟撸出一套接口,但性能非常差,生产环境 FPM 下再怎么优化,一个 hello world 也要 120ms。Swoole 异步非阻塞高性能引擎 。通过 Swoole 来加速 Laravel/Lumen,LaravelS github.com/hhxsv5/laravel-s 兼顾开发效率和性能。
|