我们都应该学习PHP
估计有很多朋友是因为PHP这三个字母进来阅读的。现在开发者社区里面都在贬低PHP,唱衰PHP,已然成了一个梗。但我觉得PHP非常值得大家重新认识,PHP开发者社区也非常值得大家学习。不见得是来学习PHP这门编程语言,可以学习PHP这门语言的设计思想和PHP开发者社区的运作模式。
PHP这三个字母官方的含义是这样的——PHP: Hypertext Preprocessor。但我想对PHP这三个字母做一个新的解读:Pragmatic、Humanized、Permanent。这三个单词也是我们所熟知的注重实效、人性化设计和长期主义。在我看来,PHP这门编程语言和它背后的开发者社区非常深刻地体现了这三种思想,而这正是我们现在提倡的回归的经营本质。
这么说有点太抽象,还是来举具体的例子吧。我说一个所有做管理软件的团队都会遇到的问题,如何应对客户的定制化需求?
可能的解决方案之一是开分支。开一个分支,在分支上进行定制开发,然后交付给客户。Git开分支很快,瞬间就完成了,挺简单的。但如果有十个客户、几十个客户、几百个客户呢?分支的维护就是巨大的成本。比如产生了Bug,需要在几十乃至上百个分支里面进行代码的合并更新,这个维护工作就要了命了。
另外一种可能的解决方案是在代码里面预留各种各样的配置开关。针对不同的客户采用不同的配置或者开关。但这种方式会造成大量的代码冗余,程序结构复杂冗长,逻辑结构不清晰。长期积累下来之后,代码就难以更新维护,成为屎山一样的代码。而且也没有办法完全解决客户个性化的问题,搞不好还是需要开分支来解决。
到后来低代码开发平台就开始流行。其实这也不是什么新鲜事。我记得在2013年左右的时候去一个客户那儿做培训,他们团队内部有一个高手,做了一套快速开发平台,给客户做交付全是在这个平台上进行各种配置。表面上来看是快了,但实际上复杂度只会转移,不会消失。快速开发平台带来的问题是抽象不够、表现能力不强。受限于快速开发平台本身的能力,难以解决更深层次的业务逻辑问题。所以这时候就需要快速开发平台提供更强大的能力,比如逻辑判断、循环,甚至需要直接开放编程接口,允许用户自己写代码来实现。到最后快速开发平台本身就变成了一个开发语言。
来说说我们禅道项目管理软件的解决方案吧。我们的解决方案就是给客户提供扩展。而我们的这种能力是基于PHP的运行机制实现的。众所周知,PHP是脚本语言,是动态加载动态执行的。而且它也有很完善的面向对象编程的机制,所以在PHP世界里面,可以做各种好玩的事情。禅道项目管理软件的代码分为了大家所熟知的MVC三层,即Model、View、Controller。同时我们又细分了Configuration、Language、CSS和JavaScript这些概念。在框架层我们还有基础的Framework和核心的Library。所有的这些不同层次的代码都是可以扩展的。禅道的所有请求都会经由一个单一入口来加载,框架在加载代码的时候会优先判断扩展目录里面有没有符合扩展规则的代码需要加载。如果有的话,就先加载扩展的代码。而扩展的代码在继承基础代码的基础上又可以做进一步的修改。通过这种方式我们就实现了非常完整的扩展机制,可以根据客户的需要做各种的改动。我们给客户交付的都是扩展代码,从来不开分支。
禅道软件的这种扩展机制,其实是很简单的一种架构,没有什么太复杂高深的技术。无外乎就是定义各种的扩展规则,然后实现动态加载的逻辑就可以了。但恰恰是这种简单的架构是最有效的。可以有效解决个性化定制和主干代码更新的问题。而这种能力是在PHP语言的动态机制基础上构建的。这是PHP注重实效的非常好的一个体现。
PHP社区也非常注重开发者友好。我就不多讲,简单说几个点。比如PHP的手册,非常成体系,非常翔实,是我见过所有编程语言里官方文档维护得最好的。PHP在语言设计的时候也尽量给到开发者各种的自由,没有太多强制的地方。同一个问题在PHP世界里面有各种各样的实现方式。
PHP开发者社区也非常地稳健,不急不躁,稳步前进。PHP社区在更新迭代的时候采取了渐进式的方式,向下的兼容性做得很好。这样可以保证老版本PHP开发的程序也可以享受新版本PHP带来的性能提升的收益。两年前PHP社区还成立了基金会,累计募集了超过110万美金的资金,截止今天账面上结余73万美金。在过去的一年里,PHP基金会雇用了6位全职或者兼职的PHP开发人员。在新的一年里还会计划雇用4名开发人员。消息发出后,PHP基金会共得到了207份申请。PHP基金会从中选出了12名合格候选人的候选名单,又从中选出了4名杰出的开发者。自从成立了基金会之后,PHP的发版速度也在加快,一切都在朝着更好的方向发展。
今天是借PHP这门编程语言展开讨论。但其实在产品研发和企业经营过程中也是一样的道理。同样也需要注重实效、人性化设计和长期主义。随着新经济周期的到来,我相信会有越来越多的团队开始注重三者。比如我最近就看到了好多从微服务架构重新用单体应用模式重构的案例。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
开源不挣钱?这个项目上线半年月入超 30w
很兴奋的告诉大家,Sealos 自从 6 月份上线以来,仅半年时间注册用户已经突破 7万,月收入超过 30w,本文来向大家介绍我们是怎么做开源商业化的。每月平均增速超过 40%,而且这些收入大部分来自用户充值,或者是通过开源社区主动找到我们付费。 商业化的重要性 作为一家创业公司做开源,我们除了融资那点钱,没有别的收入来源,不像大厂可以有其它现金流来补开源这块,我们不考虑商业化那就会死,死了项目就无法维护和加大投入,最终就是用户和我们双输。 而有了能走通的商业模式,我们就能创造营收,有了营收就可以招更多的人,融更多的钱,加大更多的投入,发展更大的市场,客户多了边际成本就可以下降,每个用户也就能得到价格更便宜,质量更好的产品,是个良性循环,资金像血液一样驱动整个项目蓬勃向前发展,最终用户和我们都受益,双赢。 fake.js 作者因为没有好的商业模式而关停项目就实属可惜。 当然我也非常敬重那些非常有情怀只做免费开源视金钱如粪土的人,不过在我看来钱是工具,是杠杆,有这个可以让项目几十上百倍速度发展。 那为什么不闭源 既然要收钱干嘛还要开源?来搞伪开源嘛? 首先,我自己乃至我们整个团队都觉得开...
- 下一篇
GnuCash 5.5 发布,跨平台财务管理软件
GnuCash5.5 现已发布,这是稳定版 5.x 系列的第六个版本。GnuCash 是一个适用于个人或小型企业的财务软件,采用 GPL 协议开源,支持 GNU / Linux、BSD、Solaris、Mac OS X 及 Microsoft Windows。GnuCash 易于使用,且功能强大,它可以追踪银行帐户、股票、收入与支出,也可以基于专业的会计原则确保帐目平衡并提供准确的报表。 在5.4 和 5.5之间,完成了以下错误修复: Bug 607000 - SLR 可见事务 更改“Since Last Run”对话框以仅显示状态非空的事务。 Bug 792241 - 允许对计划事务进行排序 Bug 798025 - SLR Value entry 未与位置绑定 当条目具有 focus 时禁用滚动和水平滚动条。 Bug 798760 - SLR OK 按钮完成值输入 通过此更改,“Since Last Run”对话框的“OK”按钮将提交正在进行的编辑并前进到需要输入的下一个编辑。仅当不再进行编辑时才会关闭对话框。 Bug 798760 - 带值输入的 SLR 更换提醒 当用户提供了所...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- Mario游戏-低调大师作品
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- 2048小游戏-低调大师作品
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7,CentOS8安装Elasticsearch6.8.6