打算把公司业务一部分用webman去实现,workerman经过这么些年的迭代也越来越好
但是感觉现在webman自身的包比较少,比如自动路由、多应用域名绑定插件,其实代码量并不是很多,
搞成插件的话,感觉整体变得不简洁了,想先用webman重构自己的开源项目,但是纠结如下;
1、webman1.4版本,是否会将自动路由、日志、event、action-hook融合到框架自身的,比如action-hook,我按照文档中间件写法
使用initialize函数代替beforeAction函数,更贴合基础PHP开发者写法。其实这种小插件是web开发肯定要必须使用的,并且代码量也不多,
像TP那样其实更好一些,没必要过多的安装扩展。
2、插件系统的事件,钩子初始化执行、动态加载路由,不知道1.4版本的这个什么时候会出,是否会在8.15之前,插件系统外面开源的很多,
比如onethink、zz-studio/think-addons,本来打算魔改,但walkor大神毕竟是webman的开发者,最主要的,不想自己再去填坑!
== webman的大部分用户,tp laveral占比肯定是大部分,所以这个插件的架构不知道亮哥打算如何设计,或者说还没动工。
如果说插件架构类似于zz-studio/think-addons这种,重构完项目后等1.4,如果不是类似于这种zz-studio/think-addons,则打算自己造轮子!
亮哥一直坚持以最小内核提供最大的扩展性与最强的性能,你仔细体会一下就知道了
确实高效和简洁,维护webman开源项目肯定会需要付出不少精力,但既然是一个web框架,如果有原生的功能集成在自身Framework里,会更加好一些,当然这样会耗费walkor巨大的心力。
感觉webman的命名规范不是很好,默认的app文件夹为小写,当然也可以写成大写,但是命名空间是App
可以在JSON更改,但是,要么全部小写,控制器首字母大写驼峰,
要么全部文件夹是首字母大写,比较统一
app\admin\controller\Index.php
App\admin\controller\Index.php // 这是当前的,但是app文件夹如果小写的话,感觉不统一,大写的话,感觉跟目录其他小写的有些突兀,
要么像app\admin\controller\Index.php 基于TP的,
或者像自身的App\Admin\Controller\Index.php // 这种基于TP3的写法也可以啊
composer.json 里的App 配置主要是为了兼容有些项目使用大写命名空间。
创建控制器可以用命令
php webman make:controller 控制器名字
来生成,它会自动识别大小写我已经全部搞成小写了,但是dumpautoload后 IDE有时候还是提示App命名空间,等会自己找找,其实webman核心大小写都无所谓
app文件夹里面还是建议小写,第一书写方便不需要切换大小写,第二app文件夹小写也跟整体项目契合,像TP3那种命名空间大写的,
他的文件夹也是App大写,webman出来的时间并不是很长,期望越来越好,这些小细节,其实也特别重要,感谢webman!
1、1.4版本内核预计会加入自动路由。1.4版本支持是否复用控制器配置,不复用控制器将每次初始化控制器,自动调用
__construct
构造函数,所以action-hook不再需要了。其它目前没有打算加入到内核2、1.4版本预计8月15日出
1.4版本里的应用插件实际上和开发普通应用区别不大。所有插件放在plugin目录下,每个插件在plugin下是一个目录,将插件复制到plugin下安装好了插件,将目录删除就是卸载插件。
感谢,我自己再去重新造个插件轮子吧,另外还有一些问题,webman1.4的多应用下域名绑定,是否会加入内核,并且现在的绑定,不支持前缀,需要写全域名感觉不是很友好,另外事件默认读取event.php,是否可以增加一个插件初始化钩子,比如appinit 或者pluginInit。不复用控制器配置则会自动调用__construct函数,如果在这个函数里面设置event.on初始化事件,是否会重复执行实例化次数?
多应用下域名绑定 不会加入内核。我不清楚你说的前缀具体什么作用。appinit事件到时候看具体需要。事件初始化应该都放在event.php配置里,这样可以保证每个进程只初始化一次。手动调用event.on重复监听同一个事件将会重复触发事件回调。
当前的域名绑定是直接写 例如a.domain.com绑定到一个应用,前缀就是直接写a,手动注册事件重复回调,事件这个流程我自己看源码吧,新版跟这个应该出入不太大吧?
域名绑定,要么全为子域名a,要么全为完全域名a.d.com,俩个混用,像tp比较混乱,否则有的场景会出错。所以的用法,统一为好。
内核就是内核,插件就是插件。
复制到plugin下这种安装插件方式是否过于原始,不利于扩展包升级啊
composer 升级不好吗?
插件式挺好的啊,想要什么就插什么。
+1