fucktwice
V2EX  ›  PHP

为什么php这么恶心,重复作用的api那么多?

  •  
  •   fucktwice · Aug 21, 2013 · 9528 views
    This topic created in 4825 days ago, the information mentioned may be changed or developed.
    61 replies  •  1970-01-01 08:00:00 +08:00
    clippit
    clippit
    Aug 22, 2013❤️2
    1
    发帖不举例的都是标题党
    gDD
    gDD
    Aug 22, 2013 via iPhone
    2
    楼上说得好,这种没有例子纯吐槽的烂贴比PHP的恶心不知多少,况且我每天写也没觉得有多恶心啊!
    andy12530
    andy12530
    Aug 22, 2013
    3
    比如说 isset和empty, requice & include ?
    看起来一样,使用起来有时还是有区别的哦。。
    saharabear
    saharabear
    Aug 22, 2013❤️1
    4
    如果看起来一样,但使用起来有区别,那一定是自己没仔细看文档。比如:

    1, require和include本身区别很大,一个执行一个不执行。分别用于文件执行和模板。

    2, isset和empty用于处理变量是否设置或者设置了是否为空。

    从程序的基本概念上,这是完全不同的。
    ETiV
    ETiV
    Aug 22, 2013 via iPhone
    5
    就知道喷喷喷喷喷
    birds7
    birds7
    Aug 22, 2013
    6
    应该不是做技术的在评价一门语言。。。
    jybox
    jybox
    Aug 22, 2013❤️1
    7
    http://php.net/manual/en/aliases.php
    实在没必要举例了

    个人感觉PHP算是流行的语言中唯一一个语法没经过精心设计的
    saharabear
    saharabear
    Aug 22, 2013
    8
    @jybox 在API的演进过程中,也许API本身有问题,但是如果完全遵循某种方式,还是没问题的。比如完全用Symfony的模式。

    一说“唯一没有语法精心设计的”,我就想起好兄弟perl.
    vibbow
    vibbow
    Aug 22, 2013 via Android
    9
    @saharabear 还有python, 居然会有大版本严重不向后兼容的情况。
    saharabear
    saharabear
    Aug 22, 2013
    10
    @vibbow 嗯,我觉得python不容易也可以理解(虽然有点那啥,是吧)。我没想到的是python会多版本共生(04年开始玩python,从没想过会多版本到今天还共生)
    wwqgtxx
    wwqgtxx
    Aug 22, 2013 via Android
    11
    @vibbow 但那也是语言进步的代价,Java向后兼容很好,导致大量过时api在语言中存留(特别是集合类库,大量老旧类库),加大了复杂度,也影响到安全性的提高
    felix021
    felix021
    Aug 22, 2013
    12
    @jybox 因为php是一摞一摞的补丁堆起来的。。不过要说没有经过精心设计的流行语言,你也可以把bash算上。
    ruchee
    ruchee
    Aug 22, 2013
    13
    @jybox 因为精心设计出来的语言基本都流于学术圈,压根流行不起来,工业上需要的就是能干活的东西,而且需要什么就可以加什么,在你加一点我加一点的过程中,API就混沌了
    hanf
    hanf
    Aug 22, 2013
    14
    php?那个非正交设计的典范?开玩笑。
    blahnice
    blahnice
    Aug 22, 2013❤️1
    15
    @saharabear
    『1, require和include本身区别很大,一个执行一个不执行。分别用于文件执行和模板。』

    您真敢说啊。。
    kingwkb
    kingwkb
    Aug 22, 2013❤️1
    16
    @saharabear 1, require和include本身区别很大,一个执行一个不执行。分别用于文件执行和模板。

    这个真的不对

    我来说一个吧,parse_str 使用 传入参数来获取返回值,常用的函数中真独特
    saharabear
    saharabear
    Aug 22, 2013
    17
    @blahnice 您要较真,那就看文档去,require和include区别的确很大。后面这句“用于文件执行和模板”虽然不严谨,但我要表达的意思还是当用了include的时候,更适合于把php当模板的过程,require的时候,更适合用于普通文件的“包含并执行”的概念。 并且require和include大部分情况下都比require_once和include_once要好,因为php不用到处找是不是已经require过了。这是我要表达的,如果用词不准,那是我的问题,我改。
    blahnice
    blahnice
    Aug 22, 2013
    18
    @saharabear 你确定一个执行一个不执行?
    saharabear
    saharabear
    Aug 22, 2013
    19
    @kingwkb 嗯嗯,我的描述有问题,我的意思还是一个出了问题会执行,一个不出问题会执行,为了习惯,所以在模板中更常用include在其他地方更多用require,require出问题不执行,include会执行(我觉得我表达能力有问题了)

    另外,parse_str的问题,你是说它必须把参数传进去然后获取返回值吗?这个的确独特,但我觉得还好。
    saharabear
    saharabear
    Aug 22, 2013
    20
    @blahnice 我的表达可能还是有总是,一个出了错会继续执行,一个出了错不继续执行。。。如果我表达得总是不对,我最好去睡一觉,昨天到现在有点醉(喝多了),还没清醒。但我明白这个区别,一个出错还会跑下去,一个出了错不会跑下去。。。。。(error和warning)
    saharabear
    saharabear
    Aug 22, 2013
    21
    @blahnice “我的表达可能还是有总是”,我的意思是“我的表达可能还是有问题”
    msg7086
    msg7086
    Aug 22, 2013❤️1
    22
    @saharabear include和require更多的还是为了区别被引用文件的重要性吧。
    比如架构中,引入一个外部类库可能会考虑用include,而引入核心类库则会偏向于require。

    话说模板的话用模板库会好一点吧……另外丢失模板文件不是应该fatal error的嘛……

    (睡觉去吧
    saharabear
    saharabear
    Aug 22, 2013
    23
    @msg7086 失眠很久,喝酒为了睡觉,结果还是睡不着。 模板用twig挺好用的,越用越想用。
    msg7086
    msg7086
    Aug 22, 2013
    24
    @jybox 一个18年前设计出来的脚本语言,不能要求太多吧。

    估计作者当时也没想到会搞得这么大吧。

    既要易用性,支持内联脚本(像asp),类C语言,上手快,又要设计精良,还要有足够的向后兼容性,还要性能不差,难,很难。

    python,为了一些设计上的改进,抛弃了向后兼容性,造成版本分裂。ruby/rails,每次升级都怕break。

    至少PHP做版本升级的时候省心很多。
    saharabear
    saharabear
    Aug 22, 2013
    25
    @msg7086 ruby/rails升级困难吗?(不懂Ruby),求教。有朋友用Rails做站,好像一出新版就跟。
    msg7086
    msg7086
    Aug 22, 2013
    26
    @saharabear 我们这边有做企业级产品的部门对ror的升级非常谨慎。
    嘛因为全程测试驱动开发,所以多数情况下测试跑绿了一般问题不大。
    但是ruby193升200还是非常担心会出问题的。

    毕竟是政府背景的服务,挂了的话影响很大的。
    xlmo
    xlmo
    Aug 22, 2013
    27
    为什么楼主这么恶心,提论点不列论据?
    kuochung
    kuochung
    Aug 22, 2013
    28
    经论证啊,这个楼主明显是标题党。
    这个这个~每个语言啊都是相对比较而言。没有绝对。就B/S模式的应用来说,若追求快。谁最快?Rails部署很快吧,可是运行效率PHP还是蛮理想的。这点呢,facebook足以说明(具体实现不说)。
    你所指的这个恶心啊,我暂且就理解成是矛盾吧。恰好PHP也是矛盾的,比如它是一个很容易掌握的web编程语言,但是“精”就比较难了。
    就我本人而言,我比较厌恶的,无法逾越心里的某种“难用”“恶心”。。。等等等。。都是我对我所使用的某种技术的理解过于片面,掌握不足,没领悟其思想。这个也许就是“技术情节”吧
    kuochung
    kuochung
    Aug 22, 2013
    29
    这个补充一句啊。每个编程语言身上多少都具有一点“时代使命的”。互联网后时代不久诞生了很多编程语言么? scala,erlang,nodejs,golang。是吧。没有那个是最好的,只有适合的。
    sgissb1
    sgissb1
    Aug 22, 2013
    30
    @saharabear 虽然我不并不觉得恶心,但我只是认为这里命名不是很好蛋很疼。有时候会用错,尤其是我这种初学的人。
    xmbaozi
    xmbaozi
    Aug 22, 2013
    31
    看了lz发过的帖子,就可以对这个贴 hehe 了
    wjcody
    wjcody
    Aug 22, 2013
    32
    呵呵...
    lesswest
    lesswest
    Aug 22, 2013
    33
    呵呵。。。不至于恶心吧
    cin
    cin
    Aug 22, 2013
    34
    如何刷分教科书演示帖...
    itaotao
    itaotao
    Aug 22, 2013
    35
    居然敢黑我大php,一般能问这种问题的,都是学术不精的。有人说什么精心设计,没有哪门计算机语言是精心设计的,如果可以那来个牛人精心设计一个相对完美的语言,一统天下好了,省的大家搞这么多语言。
    saharabear
    saharabear
    Aug 22, 2013
    36
    @msg7086 感谢送出。
    blahnice
    blahnice
    Aug 22, 2013❤️1
    37
    @saharabear

    我想你还是没理解。你试试看include的文件里有个语法错误,到底会不会只是warning一下,然后一直执行下去。
    你说的error和warning的区别是在查找文件进行包含的时候报错的区别,不是执行时的区别。
    这真不是表述的问题,是理解的问题。
    不能误导其他人嘛,发帖讨论技术要对自己说的话负责,有错误得承认,不能又牵扯出更多的错误。
    kennedy32
    kennedy32
    Aug 22, 2013
    38
    @saharabear require和include只是处理失败不一样吧?都是执行的。
    kennedy32
    kennedy32
    Aug 22, 2013
    39
    楼主如果觉得所有事情都有唯一办法解决,就应该去学python,这是python的哲学
    Hyperion
    Hyperion
    Aug 22, 2013
    40
    表示php其实也在逐渐统一方法... 5.6去掉的一大批别名, 正则也只能使用一种风格了.

    其实, 提供了这么多方法你自己选一种不就好了吗? 记住最合适的一个办法, 其他混个脸熟再顺便实践一下, 就够了, 不至于看不懂或者不会用就得了... 这么多纠结的问题本来就是不必要的...

    但也请不要勿用和滥用一些东西, 例子一下子想不起来了...
    saharabear
    saharabear
    Aug 22, 2013
    41
    @blahnice 嗯,是我的错。
    fucktwice
    fucktwice
    OP
    Aug 22, 2013
    42
    @jybox 好吧,我承认这次我是标题党,不过你的意思就是我想说的.
    acpp
    acpp
    Aug 22, 2013❤️2
    43
    整天瞎j8吐槽的都是一事无成的
    vibbow
    vibbow
    Aug 22, 2013
    44
    @fucktwice 标题党必须去屎
    msg7086
    msg7086
    Aug 22, 2013❤️1
    45
    @kuochung ROR架构更注重开发速度和维护成本而不是运行效率。
    在人工贵比天的欧美澳,服务器比人力便宜多了。一个苦工一个月最起码5k$吧,这点钱光托管服务器就能托个10多台了。
    全程TDD开发,统一框架结构,就算来了新人也可以很快上手,老员工走了也不怕断头烂尾,也不太怕写错代码出Bug。

    当然如果上到脸书的访问量级别又是另当别论。
    feuvan
    feuvan
    Aug 22, 2013
    46
    风格不一致的话是历史问题,这个基本无解了。
    因为一开始就是quick and dirty的
    fucktwice
    fucktwice
    OP
    Aug 22, 2013
    47
    @msg7086 有道理,技术也分国界,总结还是 劳动力的成本
    summic
    summic
    Aug 22, 2013
    48
    @andy12530 require 都写不对,还是好好学习学习吧
    kuochung
    kuochung
    Aug 22, 2013
    49
    @msg7086 这个这个~我要表达的意思呢,在“每个语言啊都是相对比较而言。没有绝对。”,我的论点。
    msg7086
    msg7086
    Aug 22, 2013
    50
    @kuochung 我算是补充你的论点吧。各种语言都有自己的擅长之处,嗯。
    andy12530
    andy12530
    Aug 22, 2013
    51
    @summic 嗯,被你抓到喷点了~~~
    Air_Mu
    Air_Mu
    Aug 22, 2013❤️1
    52
    在楼主的努力下,PHP在V2EX的地位上升至少五个百分点。
    谢谢楼主
    kuochung
    kuochung
    Aug 22, 2013
    53
    7sj525bL0Wy7FOx9
    7sj525bL0Wy7FOx9
    Aug 23, 2013
    54
    你可以自己写个来代替PHP,没人逼你用...
    adqin1984
    adqin1984
    Aug 23, 2013
    55
    其实别看那么多函数,那么多功能,常用的其实也就那几个函数,初学者学任何一门语言都不容易,找到学习的门路最重要,而最好的门路就是做实际开发,一边做,一边查阅资料。
    JeremyWei
    JeremyWei
    Aug 23, 2013
    56
    虽说PHP不是很优雅的语言,but it works,并且它正在变得更好,它现在也有闭包和对元编程的支持。
    felix021
    felix021
    Aug 23, 2013
    57
    @sgissb1 等你发现你已经不是初学了、但仍然很易用错的时候你就会开始觉得恶心了。
    sgissb1
    sgissb1
    Aug 23, 2013
    58
    @felix021 对弱预言不能要求太高
    felix021
    felix021
    Aug 23, 2013
    59
    @sgissb1 是的,所以我现在全面切到python了。
    sgissb1
    sgissb1
    Aug 23, 2013
    60
    @felix021 python了解不多,感觉也是弱预言啊。

    现在不清楚做web哪一个比较好用。在学php,娘的用了ci,想骂人。
    dorentus
    dorentus
    Aug 23, 2013
    61
    啥叫『弱语言』……

    Python 是强类型的,比如:

    a = 1 # 变量 a 的值是一个整数
    b = '2' # 变量 b 的值是一个字符串
    a + b # 这里会报错

    而 PHP、Javascript 这些则不然,比如 Javascript 的 1 + '2' 的计算结果似乎是字符串 '12',PHP 的 1 + '2' 的结果好像是整数 3。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1853 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 137ms · UTC 09:20 · PVG 17:20 · LAX 01:20 · JFK 04:20
    ♥ Do have faith in what you're doing.