当前位置: 首页 > 后端技术 > PHP

ThinkSNS+Component,基于LaravelRoute的社交系统【研发日记系列3】

时间:2023-03-29 14:18:56 PHP

上一节介绍了扩展类型,分别是plus-component和plus-plugin。这里我重点介绍如何实现plus-component。什么是plus-component,顾名思义,plus代表ThinlSNS+程序,被-隔开的component就是一个“包”或者我们理解为一个应用程序。这里的“应用”指的是实现API或者web的功能。于是就诞生了这种类型。但是plus-component不仅仅是一个应用,还是一个简单的功能扩展。比如medz/plus-storage-quniu就是扩展后的七牛云存储。由于composer插件的建立涉及到路由,所以最初的想法是在/routes目录下生成文件,将包的路由文件复制到这里。后来发现了问题。最后,我认为plus-component的实现不一定是基于路由的应用,也可能是一个简单的扩展。再看中间插件的接口类:其中router变成了非必填项。取而代之的是三个钩子方法install、update、uninstall方法,分别对应安装、升级、卸载。plus-component中间插件在设计时会在Laravel的/config/component.php中添加如下配置:中间插件的composer.json配置其实很简单。请参阅上面添加到/config/component.php的代码。安装程序项来自哪里?查看包的配置:是最后一个extra.installer-class的配置,这里是完整的类名,这样composer插件执行的时候,会读取这个额外的配置,写入到Laravel的配置文件中。install/update/uninstall在社交系统ThinkSNS+中,有一个类似phpartisancomponent[install|update|uninstall]vendor/name的命令,主要用于包的安装、升级和卸载。实际操作如下:这样安装包,这个命令会读取/config/component.php的配置得到安装器,这样运行不同的参数后,调用install、uodate、uninstall等需求钩子实现他们的目标。在router的顶层接口类中可以看到,有一个router方法,这个方法的返回类型有两个void|string,所以void表示没有路由,string表示封装路由文件的绝对地址。执行phpartisancomponent命令时,会在/config/component_routes.php中添加相应的配置。在/app/Providers/RouteServiceProvider.php中如下:可能你理解错了,为什么直接include呢?是的,这里的代码其实是基于Route::group的,包中的文件可以正常使用Route::*进行路由配置。既然资源可以基于路由,静态资源肯定有问题。接口类中也有这样的规定:这里返回包中存放静态资源的目录,在执行安装或升级命令时复制到/public/vendor/名目录下,实现发布静态资源的功能.这里更高级的封装其实只是模式封装。在ThinkSNS+的phpartisan组件中,其实有一个--link参数。它是干什么用的?其实不难理解,就是把静态资源从原来的拷贝变成了创建软链接。这在开发过程中很有用。下期预告:下一篇我们将简单说说以下ThinkSNS+自封装命令的实现。内测申请方法  提供个人/企业联系方式及证明资料(实名身份证/企业营业执照照片或扫描件)及申请说明,发送邮件至lihecong@zhishisoft.com即有机会获得第一名批次内测资格,名额有限,报名从速。开源代码仓库GitHub:https://github.com/zhiyicx/th...(点击星标每天关注开发状态。)