我们都应该学习 PHP - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Tinywan
V2EX    PHP

我们都应该学习 PHP

  •  
  •   Tinywan 2023-12-25 09:45:34 +08:00 3185 次点击
    这是一个创建于 657 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的头像

    今天这篇文章算是标题党吧,估计有很多朋友是因为 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 日 拍摄于 杭州西湖

    Tinywan
        1
    Tinywan  
    OP
       2023-12-25 09:46:59 +08:00
    感谢春哥分享,简单实效、人性化设计和生存之道。
    gerorge
        2
    gerorge  
       2023-12-25 10:19:24 +08:00
    嗯嗯嗯
    dcsite
        3
    dcsite  
       2023-12-25 11:02:20 +08:00
    这是 10 年前发表的文章吗?
    或者是禅道的技术已经 10 多年没更新了?
    yangzzz
        4
    yangzzz  
       2023-12-25 11:08:33 +08:00
    有一说一 PHP 的文档做的很详细,看起来很舒服
    justfun
        5
    justfun  
       2023-12-5 11:23:48 +08:00
    泪目啊 难得看到一篇如此夸赞看好 PHP 的文章
    Features
        6
    Features  
       2023-12-25 13:02:16 +08:00
    PHP 是最好的编程语言!
    luoyou1014
        7
    luoyou1014  
       2023-12-26 20:54:31 +08:00
    貌似没有详细介绍一下拓展机制,有具体的介绍不
    paranoidxxx
        8
    paranoidxxx  
       2024-01-03 16:42:58 +08:00
    很羡慕 OP 的工作和生活的平衡
    想了解一下如果做远程的话 以后端 PHP 为主 再加其他什么技术栈(前端,数据库等)为全栈比较好接项目呢
    Tinywan
        9
    Tinywan  
    OP
       2024-01-06 16:53:02 +08:00
    @dcsite 2023 年 12 月
    wfdaj
        10
    wfdaj  
       2024-03-01 23:47:46 +08:00
    piaohan123
        11
    piaohan123  
       2024-03-12 23:58:36 +08:00
    PHP+Wordpress 简直不要太爽,一个网站最起码 2W 起步,接单接到手软都得
    horizon
        12
    horizon  
       2024-06-24 19:11:49 +08:00
    APass?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2699 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 12:07 PVG 20:07 LAX 05:07 JFK 08:07
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86