PHP的设计模式和定位

看了本站的ORM指南,不错不错,但是我发现一个问题,PHP总是从Java那里抄袭各种东西。

说得还不如直接转JEE算了。

MVC也是从Java直接搬过来的,而且还很烂,最近我跟我师傅在讨论Smarty,其实PHP根本不需要Smarty,对于现在的PHP多年的开发者而言,发现PHP本身就是一门模板语言,可以嵌入HTML,跟JSP是一样的,当初发明Smarty就是为了发明PHP的JSP(就像Java的JSP),因为PHP开发者没认识到自己在重复制造跟自己功能一样的齿轮,而且还更坏了效率,后来根本再也没有人用Smarty。

如今想想那玩意的诞生真是个笑话。

PHP开发者比较多。。。有些是别的语言带过来的,比如Java码农跑去学PHP,发现PHP没这个没那个,于是就做了一个跟Java一样的那样的东西,结果发现PHP本身就是这个东西。。。
只能说明一个问题:Java民工由于擅长OOP,然后用PHP也想照搬套路,但是其实他们并不了解PHP,于是他们会制造一些吃饱了闲着没事干的模块。
你看Smarty就是这个这么(实现了重复功能但是使用的话又多了个鱼)的玩意。。。
只能说做Smarty的这位Java工程师不懂PHP的空气(氛围),如果不出意外,我想还有人会做一些更搞笑的:比如反射类,其实PHP用引号定义字符串然后直接new就可以了,然后Java工程师发现Java应该Class.XXX那样写,结果自己把这简单的事情复杂抽象成了一个类。。。然而这位Java工程师并不知道PHP本来就应该这样new而不应该他那样拐弯抹角。

给人的感觉就是。。。一个外地人来到这里,其实本地村民抄捷径就能进城,然后他用在他城市的走法走高速公路结果走了半天没到(本来就不应该走高速路因为那是车走的,路当然远一些啦)。
既然是农村就应该用农村的走法,城市人自以为是自作主张添加了很多没有意义的做法。
然后农村人没城市人有钱,然后产生了一种崇拜,以为城市人的走法更“高大上”。
就像现在很多PHP码农至今还认为MVC很高大上。。。其实根本不知道MVC的V对于PHP而言没有任何意义,就像Smarty,它自己就是个模板语言还要Smarty类干嘛。

完全就是Java开发者跑过来祸害的,当然也有PHP开发者看到Java开发者内心产生不平衡所以抄袭之嫌。
其次,PHP出生的那天就根本不是一门VM型语言,效率自然Java差距云泥之别,村民本来就没钱做公交或者买车上高速,而城市人有这个本事,然后村民跟风就算买不上车弄个拖拉机也走高速反正能上高速装个X。我的意思是,PHP本来就慢还要模仿Java那样去设计,但是其实本身就很快能几行代码完成网站的偏要以Java所谓“高大上”OOP的方式解决问题,浪费了系统资源拖慢了速度久违
了装这个X,有意义吗?
然而,村民自有捷径,很快就可以进城了,延续之前的方式,不但可以节省资金,同样也达成了目的,自己更擅长这条路。

PHP自有自己的方式,很快就可以完成网站或者API,何必要弄各种MVC ORM呢?还好没跟平台的GUI多打交道,不然的话“MVVM君”表示不服了。


Java的用法其实在PHP上不一定行得通,ORM模式如果不借助MC(Memcached)、RD(Redis)效率怎么算?弄得像个折断的勺子(网上有一个把编程语言比作各种物品的图文里面说的如果没有MySQL,PHP就是个折衣天使吧大概这样的意思)。
还有一点就是。。。最近我发现前端越来越强了,V8引擎不是摆设,Web会逐渐UI跟后端分离,PHP被用于做端口的话,效率明显不如Node和其它各种语言工具,而且如果就拿端口开发而言,很难发挥PHP处理超文本的特长,有失于它的名字——Hypertext Processor。只因为这个时代开发工具和水平的进化吧。
所以传来的Wordpress以Node改写取代之前PHP的消息,我看也是必然。

反正以前的以前在各家公司呆,我发现用PHP开发端口不如我自己用的别的语言的方便,比如WSGI直接把数据导出来就得了,PHP这种处理HTML为主的语言似乎不受宠了。
而且前一段时间的时候我自己也对比了C#(Mono / CoreCLR),我发现C#不但更OOP,而且更加让系统写得像系统而不是网站,然后一些类真心比PHP好用,比PHP强大。


另外,读过PHP 1.9代码的人,会深刻认知到PHP是一门用C语言写的直接吐出HTML然后“宏替换”方式处理部分文本的文本处理工具,本质上类似于sed、Perl而强于它们因为它可以直接嵌进去替换。
所以:

定位于文本处理的语言在服务器吞吐网页时代是很流行的,但是现在似乎变得相对弱了。

总结的话,PHP其实应该以自己的方式做自己的东西,盲目模仿Java写低效的工具,绕了远路还捡不了多少便宜,反正跟“坚持和发展ZG特色XX主义理论体系”的意思是类似的。还有它的定位让它停留于Hypertext的处理,会不会淘汰?说太早,sed、awk和Perl至今还有人用的,只是不能成为主流。

也察觉到最近有一批公司正在替换语言。。。但是在没有大规模学习更方便于现在的开发模式的语言的情况,PHP暂时还是不会淘汰出主流一线的。

Jakit -
感谢您为本话题评分。
共有3个回答
  • 0
    spzcsy - 2016-01-04 不喜欢

    品读一番,对我来说确实有些耳目一新。我是刚入门PHP,单纯为了转职,看到JAVA对PHP的影响还是有些朦胧。不过对PHP开发端口的讨论倒是警醒了我一番,学海无涯。

  • 0
    Json呆 - 2016-02-05 不喜欢

    mvc不是为了学习Java而产生的,而是为了更方便的维护大的项目,纯粹的追求速度而忽略维护成本,不是每个公司追求的唯一目标

  • 0
    Jakit - 2016-02-05 不喜欢

    @Json呆 嗯,确实应用了MVC设计模式之后的PHP维护更方便,但是,其实PHP可以做到跟Perl那样的模块化设计,最最初的嵌入HTML写法确实维护成本很高,但是当初PHP设计者并没有考虑这些,只是后人把PHP用成目前的这样子。
    买了一支毛笔发现很难写,为了便捷用强力胶水粘起来然后中间插一支笔芯当作签字笔使用,我感觉PHP就是这样的。这样的毛笔很好写,嗯,是的!效率和维护成本确实比按照原本那样规范又要学软笔书法浪费时间更重要!


    我不是钻牛角尖,这就是Evolution,进化,Revolution,革命。甚至以后连毛笔的毛都去掉,只需要笔芯和笔杆就可以了,咦?这不就是现代的签字笔吗?
    嗯,是的,我想起了当年辛亥革命的短发西装,剪辫子。
    没什么,我只是觉得,这就不是PHP了,这是Java!
    穿上了西装,根据西方的方式办学,取代汉服八股文,跟西方一样了,是的,一样了

    既然跟别人一样了,就不是自己了。

    没办法,反正我又不是PHP实现着更不是设计者,我只是程序员,公司要啥用啥,PHP长啥样跟我无关,确实也是
    在此只是根据自己的洞察弱弱想跟魔法协会的身边人弱弱地说一句,它变了,而已。

以下是预览效果,请确认排版好了再点回复。
如果你认为此话题有广告、灌水的嫌疑,请给此话题评一颗星。平均分低的话题将不会再显示。
良好的讨论氛围由大家共同维护。