PHP到底问题出在哪里的呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
binarymann
V2EX    问与答

PHP到底问题出在哪里的呢?

  •  
  •   binarymann 2012-03-11 11:33:03 +08:00 via Android 6564 次点击
    这是一个创建于 4967 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在学习web development,遵循网上一边倒的声音,尝试了ror以及python web框架,前者那个复杂啊,对于新手完全找不到北,新的ror还加入了很多如coffeescript的新技术,更是火上焦油,python相对而言要温柔的多,我学习的是gae自带的框架,据说是最简单最少魔幻的。最后看了下台湾中原大学的PHP视频教程,那叫个讲的透彻,就易学来说无人出其二,主机资源也多又好部署,Facebook,微薄不也都是PHP写的吗,看来生命力旺盛啊
    19 条回复    1970-01-01 08:00:00 +08:00
    Vim
        1
    Vim  
       2012-03-11 11:56:25 +08:00
    坊间对 PHP 的不满主要是针对其语言中的一些不一致,比如一会儿 str_replace,一会儿又是 strlen。还有函数的冗余问题,比如 str_replace 和 str_ireplace,其实给 str_replace 加个参数就完了,完全没必要再来一个函数,而功能基本没啥大变化。5.4 之前连 array dereference 这样的功能都没有。关于其他针对语言设计上的讨论可以看 http://phpsadness.com/

    另外 PHP 本身门槛不高,因此很多没经过良好编程习惯的新手写出了一坨坨诡异的 PHP 代码,这也让坊间对 PHP 产生了不好的感觉。其实我倒觉得 PHP 作为一门入门语言还行,掌握一门语言再学其他语言会轻松很多。而且 PHP 本身也有像 SPL 这样的高级特性,PEAR 和 PECL 这样的好东西,以及可以说编程语言中最好的文档资源。

    所以与其说是 PHP 有问题倒不如说是很多使用 PHP 的人有问题。
    iblogger
        2
    iblogger  
       2012-03-11 12:12:26 +08:00
    我在用php+codeinteger很好
    在有像ruby gem的西可用 (http://getsparks.org/)
    binarymann
        3
    binarymann  
    OP
       2012-03-11 12:28:18 +08:00 via Android
    本以为会招骂的,看来还是有觉得PHP好的哈
    qiayue
        4
    qiayue  
    PRO
       2012-03-11 12:36:37 +08:00
    @iblogger +1 我们也在用这个框架

    其实吧,你要想快速实现某个小功能,用PHP就很好(这个对比是基于我只会php和java),能够便捷的开发。

    比如我这个秋玉米 域名批量查询工具 http://www.qiuyumi.com 就是用PHP开发的,因为只是我一个人,而且是那种想快速试错的,所以选择了PHP
    sutar
        5
    sutar  
       2012-03-11 12:39:05 +08:00
    CodeIgniter +1
    Yii也很不错
    YvetteM
        6
    YvetteM  
       2012-03-11 12:40:36 +08:00
    问题在使用者的滥用和……好吧我承认php的语法的确比较ugly。

    binarymann
        7
    binarymann  
    OP
       2012-03-11 12:45:54 +08:00 via Android
    那就PHP学习材料各位有推荐的吗,我在看php 和mysql web开发
    freefcw
        8
    freefcw  
       2012-03-11 12:51:15 +08:00
    其实我是觉得PHP还是挺好的,但关键就在于PHP的混乱。。。而且这几年的发展好像总是会招来骂声的样子

    其实Python也有混乱的地方,不过整体来说还是很优秀的,话说Python的部署依然是个麻烦的问题
    insraq
        9
    insraq  
       2012-03-11 12:53:54 +08:00
    1L说的不错,补充一点关于框架。框架分成两种:

    第一种是Micro framework,这种框架充分的照顾了初学者,一般只有MVC和Route,初学者很容易上手,但是缺点是要重复造的轮子太多,开发不够快速。这类的框架比如:Sliex, Sinatra, Web.py

    第二种是Full stack framework,这种框架是可以用于大规模开发的,组件很多,一般包括ORM和Template,耦合度也比较高,缺点是入门较难,而且很依赖框架本身,这类框架比如:Rails, Django, Symfony
    Hyperion
        10
    Hyperion  
       2012-03-11 13:06:43 +08:00
    记得我以前一个帖子里, 说PHP乱, 还被人说我喷PHP.

    说实话, PHP是我用的最顺手的语言 (想了很久, 这里几十个字还是删了吧. 不小心喷着java神马的我才不会再干呢, 后遗症太严重了.)

    看文档, 看手册, 看一些带丰富实例的教程就成了. 个人视频教程不推荐, 一直觉得看着别人打代码来学习语言是一件非常诡异的事情, 戳开记事本自己打完跑一下不是更好?...
    lizheming
        11
    lizheming  
       2012-03-11 13:28:59 +08:00
    台湾中原大学..好的..谢谢楼主推荐~
    binarymann
        12
    binarymann  
    OP
       2012-03-11 20:06:31 +08:00 via Android
    而且还有点比较好的就是学习材料多,书一摞裸的
    lch21
        13
    lch21  
       2012-03-11 20:29:51 +08:00
    PHP 很好用。

    支持PHP的虚拟主机很便宜.

    代码质量是写代码的人决定的,而不是语言决定的。

    Yii 框架的代码就写得很好
    muxi
        14
    muxi  
       2012-03-11 23:23:14 +08:00
    作为一个使用PHP作为主要编程语言5年的人,这里表达一下我的观点

    1、任何语言都有自己的擅长的领域,说什么好,什么不好,都太绝对了,你不能拿LISP和JAVA去比谁更面向对象
    2、没有一种语言可以通吃所有的应用场景,你不能指望用一种语言实现所有的功能
    3、每一种语言都有诟病的地方,Java嗦,Python社区混乱,Ruby过多的语法糖,Javascript过于灵活等等

    楼主说PHP挺好,为什么那么多人还诟病它,是的,在一个WEB化CMS的领域我觉得PHP是一个非常优秀的工具,简单,直接,性能可以接受,社区活跃,解决方案非常多。但他无论怎样总有不擅长的领域。楼主可以自己去发现那些批判的人都是哪种类型,我总结了一下,大概有如下类型

    1、某种非PHP语言的粉丝,像iteye老大Robbin Fan这种对Ruby执迷的人,这种争论我个人觉得很无聊,没有孰高孰低,只是看你的系统,如果你曾经用PHP写的系统,那继续用PHP也没什么问题,如果你只是想尝试一下Ruby也没有错,反正都能实现相同的东西
    2、纯理论研究者。这种人没有啥实践经验,但是了解不少编程语言,大脑里总是想有一种语言集百家之所长,但是迫于现实又不得不使用php的人
    3、维护别人留下来烂摊子的人,很多抱怨的人都是经受过这种折磨,php有时候真的不适合大规模协作的项目,或者需要一个很好的机制或者控制着来规避一些问题,而整个产业里面,这种掌控能力的人非常少,也没有大规模协作的范本或者指导性措施(JAVA领域就有),导致大多数活着的PHP语言开发项目质量非常的差
    4、CMS只是一个很小的一个功能。当你的业务在不仅仅是发布,展示,这么简单的时候,或许PHP就不适合了,或者只适应其中的某一个模块,最典型的就是电子商务领域、金融领域等等,比如你发布一个商品,会触发一些列的操作,比如要去做搜索,要去计算权重,要去分析关键词,要去检测黑名单,要去做通知……等等,所有的这些都是一服务的形式在运行的,这时候就会有人抱怨PHP不能多线程,不能很好的做分词,不能很好的做Server,不能更高效的执行,不能xxx,当PHP在整个项目里变得无足轻重的时候,抱怨就来了
    5、最后一种人就是小白,没事就跟风吐糟
    dongbeta
        15
    dongbeta  
       2012-03-11 23:45:46 +08:00
    @lch21 从代码规范来说,yii并不怎么样。我是yiidoc组的,我不是来黑的。。。。。
    lch21
        16
    lch21  
       2012-03-11 23:49:55 +08:00
    @dongbeta 你觉得哪个PHP 项目代码比较规范。我想学习一下。

    Yii 框架我觉得比较顺手。MVC 分得比较清晰,有点类似struts
    dongbeta
        17
    dongbeta  
       2012-03-11 23:52:58 +08:00
    @lch21 代码规范和设计模式看Zend Framework 2。实际项目优先使用Yii。
    lossdante
        18
    lossdante  
       2012-03-11 23:58:07 +08:00
    siny?ror比较火一部分是因为mvc吧,同时对ajax支持更好,再加上php没有纯oop特性,但是大家都知道,到底谁牛逼看的是使用者,就像不管硬件空谈ruby和php网站的效率和速度一样荒唐
    fature
        19
    fature  
       2012-03-12 20:33:01 +08:00
    @dongbeta re.代码风格不是很统一
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5420 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 43ms UTC 01:19 PVG 09:19 LAX 18:19 JFK 21:19
    Do have faith in what you're doing.
    ubao msn 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