我们都应该学习 PHP

328 天前
 Tinywan

今天这篇文章算是标题党吧,估计有很多朋友是因为 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 老兵,14 年的创业者。这是我的个人公众号。喜欢编码,喜欢做产品,所以我用了代码之歌做我的公众号的名字。我会持续地更新关于企业管理、产品管理、项目管理、团队建设、创业、学习型组织、企业文化、开源软件等方面话题的实践和思考,欢迎大家和我讨论交流。

2023 年 12 月 24 日 拍摄于 · 杭州西湖

2644 次点击
所在节点    PHP
12 条回复
Tinywan
328 天前
感谢春哥分享,简单实效、人性化设计和生存之道。
gerorge
328 天前
嗯嗯嗯
dcsite
328 天前
这是 10 年前发表的文章吗?
或者是禅道的技术已经 10 多年没更新了?
yangzzz
328 天前
有一说一 PHP 的文档做的很详细,看起来很舒服
justfun
328 天前
泪目啊 难得看到一篇如此夸赞看好 PHP 的文章
Features
328 天前
PHP 是最好的编程语言!
luoyou1014
327 天前
貌似没有详细介绍一下拓展机制,有具体的介绍不
paranoidxxx
319 天前
很羡慕 OP 的工作和生活的平衡
想了解一下如果做远程的话 以后端 PHP 为主 再加其他什么技术栈(前端,数据库等)为全栈比较好接项目呢
Tinywan
316 天前
@dcsite 2023 年 12 月
wfdaj
261 天前
piaohan123
250 天前
PHP+Wordpress 简直不要太爽,一个网站最起码 2W 起步,接单接到手软都得
horizon
146 天前
APass?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1003105

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX