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

打造适合自己的骨架包

时间:2023-03-29 21:43:24 PHP

有些网友每次新建工程都要执行composercreate-projecthyperf/hyperf-skeleton。其实每次这样创建项目,效率都会很低。个人项目其实还好,但是对于企业项目,就没那么友好了。比如有的公司会创建很多组件包,或者很多公共配置之类的代码。每次创建项目都需要重新copy进去,效率很低,维护起来也很不方便。所以我们可以做一个骨架包,每次新建一个项目,我们可以把当前的骨架包初始化为一个蓝图。制作骨架包我们使用hyperf/hyperf-skeleton创建骨架包,无需安装任何选项。composercreate-projecthyperf/hyperf-skeletonparent为了演示方便,我使用Github进行版本控制。上传代码到Aquarmini/skeleton-parentcdparentgitinitgitremoteadd-mmasterorigingit@github.com:Aquarmini/skeleton-parent.gitgitadd.gitcommit-a-m"INIT"gitpushoriginmastergitbranch--set-upstream-to=origin/mastermaster创建一个Demo工程接下来我们创建一个基于parent的demo工程mkdirdemogitinitgitremoteadd-mmasterparentgit@github.com:Aquarmini/skeleton-parent.gitpullparentmastergitbranchparentgitbranch--set-upstream-to=parent/masterparentgitremoteadd-mmasterorigingit@github.com:Aquarmini/skeleton-demo.gitgitcheckoutmastergitpushoriginmastergitpushoriginmastergit分支--set-upstream-to=origin/mastermaster接下来看看我们的git配置$cat.git/config[core]repositoryformatversion=0filemode=truebare=falselogallrefupdates=trueignorecase=trueprecomposeunicode=true[remote"parent"]url=git@github.com:Aquarmini/skeleton-parent.gitfetch=+refs/heads/*:refs/remotes/parent/*[分支“父“]远程=parentmerge=refs/heads/master[remote“origin”]url=git@github.com:Aquarmini/skeleton-demo.gitfetch=+refs/heads/*:refs/remotes/origin/*[branch“master”]remote=originmerge=refs/heads/master让我们随意修改一点代码,推到demo仓库合并Parent,当我们的parent有任何变化,我们只需要合并进去即可。比如我们添加一个di方法,就可以方便的获取Container,修改composer.json。以下代码省略{"autoload":{"psr-4":{"App\\":"app/"},"files":["app/Kernel/Functions.php"]}}然后添加app/Kernel/Functions.php文件get($id);}返回$容器;}}提交代码到父项目,拉取demo项目中的父分支。gitcheckoutparentgitpullparentmastergitcheckoutmastergitmergeparentgitpushoriginmaster写在最后HyperfHyperf是一个基于Swoole4.4+的高性能、高弹性的PHP协程框架,内置协程服务器和大量常用的成分。PHP-FPM的框架得到了质的提升。在提供超高性能的同时,还保持了极其灵活的可扩展性。标准组件均基于PSR标准实现。基于强大的依赖注入设计,保证大部分组件或类都是可替换和可重用的。框架组件库除了常见的协程版MySQL客户端和Redis客户端,还为大家准备了协程版EloquentORM、WebSocket服务端和客户端、JSONRPC服务端和客户端、GRPC服务端和客户端Client、Zipkin/Jaeger(OpenTracing)客户端、GuzzleHTTP客户端、Elasticsearch客户端、Consul客户端、ETCD客户端、AMQP组件、Apollo配置中心、阿里云ACM应用配置管理、ETCD配置中心、基于令牌桶的算法限流器、通用连接池、熔断器、Swagger文档generation、SwooleTracker、Blade和Smarty视图引擎、Snowflake全局ID生成器等组件省去你实现对应协程版本的麻烦。Hyperf还提供了基于PSR-11的依赖注入容器、注解、AOP面向方面编程、基于PSR-15的中间件、自定义流程、基于PSR-14的事件管理器、Redis/RabbitMQ消息队列和自动模型缓存、PSR-16位缓存、Crontab秒级定时任务、Translation国际化、Validation验证器等非常便捷的功能,满足丰富的技术和业务场景,开箱即用。