本文是从Vic Cherubini 的博文《What PHP Needs to Change》翻译而来,作者从自身对PHP语言的理解和喜爱为出发点,谈了对PHP7的展望,文章列举了作者认为PHP需要改变的地方,并衷心的希望PHP的未来更美好!程序员(一般)定义好的编程语言是他们知道最好或最经常使用。 我是一个PHP程序员,约翰是一个JavaScript程序员,DHH是一个Ruby程序员,施瓦茨和兰德尔是一个Perl程序员。 每个不同程序员看待问题都是不一样的,但是总有一两个会被共同认为是最好的。每当听到PHP被不尊重的时候,作为一个PHP开发人员,感觉很受伤。虽然我们必须使用PHP为一个用于Web应用程序的语言,但它是一个烂语言,其使用不应予以鼓励,或支持超出了必要。哎哟,听说我日常使用的语言,被给予很烂的评价时候,有人可能会说你不应该管其他人对你选择的语言的评价,只要自己认可就行。我想我真的不应该吗,而且该声明暗示的是,不仅是语言很烂,开发商烂,而且我们PHP开发者也烂。那么,究竟应该怎么做才关闭他人的大嘴巴呢?我们能否使PHP语言受到尊重? 我们能否让PHP开发人员受到尊重? 让我们来分析某些方面我们可以做到这一点。打破一切PHP7要打破一切。 PHP开发人员应该接受打破版本之间向下兼容的定律。只要不允许大量的向后兼容,PHP7将是一个高度尊重的语言。◆ 创建一个具体的核心语言 -删除所有库方法,并保持在对象集中的核心方法。 您应该能够编写无需任何外部库或扩展PHP7和对基本输入/输出,字符串处理和数学一个很好的完整的语言。库以外的任何应该通过批准扩展。◆ 一切都当作一个对象 -以从Ruby,Smalltalk和(主要)的Java对象,并把它一切当作对象。 整数是对象,字符串是对象,他们每个人都可以操作的方法, 我不相信PHP需要的Ruby和Smalltalk在对象之间传递彼此讯息的观念,而调用对象的方法才是最好的。◆ 一致的命名方法和类 -由于PHP的最大的抱怨之一是不断要检查,(needle,haystack) 或(haystack, needle),或some_function(),或function_some(),或someFunction(),一个一致的格式需要制定。◆ 让事情严格 -尝试传递到一个方法浮动字符串? 这是一个警告。◆ 一切是Unicode -在PHP6中的所有字符串都是Unicode,这很好,我主张PHP7也应该保持。◆ 中央启动点 -创建一个主类或初始化,所有代码执行源于此。◆ 清理C代码 -我不是一个C的专家,但如果你比较了解Ruby的​​C代码到PHP的C代码,可以很容易地了解了PHP与Ruby的​​内部。 我非常熟悉PHP,所以我自己的写扩展更容易。◆ 摆脱eval() - eval()是邪恶的。 如果你正在使用它,那么这是一个错的主意:这将打破PHPUnit,抛弃它从现在开始。◆ 支持操作符重载 -因为一切都是对象,开发者只需掌握操作对象的方法即可。◆ 允许的方法签名 -允许真正的方法签名,所以程序员可以有不同的参数列表或返回类型的同名方法。    class A {  
      public int function doSomething(int $a, float $b) {  
        // Same as $a->*($b->to_int());  
        int $c = $a * $b->to_int();  
        return $c;  
      }  
     
      public float function doSomething(int $a, float $b, float $c) {  
        // Same as calling $a->*($b->*($c)); since * is a method on each object $a and $b.  
        float $d = $a * $b * $c;  
        return $d;  
      }  
    } 
◆ 建立一个PHP虚拟机(PVM) -我不能完全肯定这是可能的,因为我不是一个语言设计师,但它会是不错的一个PHP虚拟机。 它可以执行PHP字节码,并允许一个明确的堆和堆栈。◆ 删除copy-on-write (COW) -COW是一个相当陌生的概念,,如果你不知道它的存在,以新的开发,就可能导致问题。◆ PHP官方发布规格 -类似于W3C HTML5规范,PHP的规格将允许开发人员实现自己的PHP版本,并确保有具体的例子来编译。尊重语言应努力使语言得到尊重。 我们应尽量招募开发者做出具有非常强大功能的PHP7。 我们应该释放巨大的代码的安全,易于阅读,并教新的开发者以正确的方式编程。我不知道Ruby的疯狂,但我尊重Ruby语言。 我看到它的力量,我看在Ruby on Rails是一个非常好的框架,它只是我不是喜欢的。如果我们能获得具有很好威望的开发商认可或尊重,PHP就会走的更远。尊敬开发人员从上文的理解,我们需要一个非常德高望重的PHP开发核心团队。 他们发布代码,举办讲座,向人们展示了“正确的方式”做事,这支团队将很快的受到不少开发商的尊重。结论我兴奋PHP的未来。 我很怀疑我的想法会被执行,但我真的相信他们会帮助整个社会。 我感到非常兴奋,当 世界第二大的网站宣布,他们正在帮助PHP建立伟大的社区。 PHP是不会消失,他会越来越好,只要我们努力提高它,改善它,终有一天PHP会成为受开发者普遍尊重的语言。最后,我不是一个语言设计师。 我的想法可能会被认为完全胡说。 如果我不正确的地方,请礼貌地让我知道,我会很高兴地谈论它。 让我们共同努力,使PHP成为备受尊重,功能强大,快速,高效的语言。编译若有差错,欢迎指正!

解决方案 »

  1.   


    ◆ 一致的命名方法和类 -由于PHP的最大的抱怨之一是不断要检查,(needle,haystack) 或(haystack, needle),或some_function(),或function_some(),或someFunction(),一个一致的格式需要制定。
    --------------------------
    这个是很有必要的,我也很痛恨。其余好像整合python,java等语言的特点似的,有待商榷。
    为了尊敬,牺牲市场也不怎么合理,受尊敬也不能让市面上成熟的php产品重新开发一遍吧。
      

  2.   

    1.命名法
    2.unicode文件名和路径的处理
      

  3.   

    无所谓,灭亡就灭亡,虽然做的php,不过对php没报多大希望。
      

  4.   

    php还是很有市场的。支持的技术人员多。
      

  5.   

    1. php的语法这么丑, 很早我就看它不顺眼了,
    但是php这么多年来没什么大的改动, 好处就是给产品带来稳定性, 和兼容性,2. 像ruby, python之流, 敢想敢做, 说改就改, 大刀阔斧, 后果却是带来非常非常头痛的兼容问题,
    当然, 如果你不考虑去升级, 也可忽略掉,3. php之所以流行, 因为中小型企业永远都是最多的, 占的市场也最大, 
    这些融资少的网站应用肯定选择php, 从而給php带来不少的商机, php算是比廉价的应用。
      

  6.   


    为了尊敬,牺牲市场也不怎么合理,受尊敬也不能让市面上成熟的php产品重新开发一遍吧。
    -----------------------------------------
    php7 肯吸收python, java或其它语言的优点, 那旧的产品牺牲是必然的了, 如果再不改, 一旦其它动态语言成熟之日, php也是地位不保, 绝非危言耸听。
      

  7.   

    好多web语言都是解释型的!对于web语言来说: 速度快,可移植,宜扩展,宜部署! 简单!这是php的优点! 如果哪一天php变得不是如此了或少了上面的任一项! php都可能消失!php不优雅. 但却很实用!rails很优雅座,但有多少高性能网站用ruby?
      

  8.   

    ◆ 创.建.一.个.具.体.的.核.心.语.言 
    看.到.这.一.条.我.好.像.看.到.了.万.能.的.银.蛋.◆ 一.切.都.当.作.一.个.对.象 
    这.一.点.也.不.认.同, 个.人.非常.喜.欢.P.H.P.的.过.程风.格.和.对.象.风格.共存.◆ 一致的命名方法和类 
    这个其实没太大必要了....楼上有人提到过, 改了已有产品就需要做兼容...不见得是好事...◆ 让事情严格 -尝试传递到一个方法浮动字符串? 这是一个警告。
    这个我没懂方法浮动字符串说的是什么◆ 一切是Unicode -在PHP6中的所有字符串都是Unicode,这很好,我主张PHP7也应该保持。
    这一点当然赞成◆ 中...央.启.动.点 -创.建一.个.主..类.或.初.始.化,所有.代.码.执.行.源于.此。
    所谓中.央.启.动.点自.己.实.现.就.O.K.了.阿...we.b程.序.用.统.一入.口., 后.端.进.程的.php那就.更好处理了.◆ 清.理C代码
    个人认.为.完.全.的.源代.码..开.放.让.开.发.者.可..以.任意.定.制.自.己.需.要.的P.H.P是..PH.P..最.大.的.优.势, 和C.只有.一墙.之.隔, 方便.◆ 摆脱eval() 
    这个也支持◆ 支持操作符重载 
    操作符的重载没有使用过, 没有强烈的需求感◆ 允许的方法签名
    方法/函数的重载, 这一点有很强烈的需求感...◆ 建立一个PHP虚拟机(PVM) 
    不认同, 何必学其他语言呢...有VM不见得完全是好事.◆ 删除copy-on-write (COW) 
    COW对用户程序员应该是没有感知的...所以, 除非你要对PHP做扩展, 否则应该不会去关心这个吧..◆ PHP官.方发.布规格 
    规范还是要有的!!!
      

  9.   

    怎么这个好几年前的博文又拿出来讨论了啊?
    各述己见,没什么对错!php 具有极大的包容性,对所有的程序员多具有吸引力。宽泛的规则(也可以说是无规则)就是其魅力所在
    不同的程序员自然也就带来了不同的书写风格,没有必要统一,统一了就不是 php 了在PHP6中的所有字符串都是Unicode
    不置可否,毕竟 php6 还只是计划中的事情,或许统一在 UTF 下也是可取的。关键在于能正确识别和处理 BOM支持操作符重载
    已然提供了较为规范的类结构,操作符重载也应该是势在必行的
      

  10.   

    语法宽松,这不好吗,为什么面对优点好像成了它的不是了似的,难道做什么都要像java似的,明明想做个小脚本却非要创建个工程出来,这个如果突然这么改变估计php程序员都去弄java了,因为这样明显就是向java去了,而这方面java肯定是老大了,那还学php干啥了
      

  11.   

    java虚拟机 
    php弄虚拟机...我受不了编译的那段等待...
    eval() 这个函数比较少用...我倒是认为php7提升的还是那 速度  和 安全性.
      

  12.   

    这条, 我不认同, 至于rails的性能,我也不敢武断地说怎么样怎么样, 
    关键是, 国内而言, 根本没几个rubyer当年豆辨考虑了很久用ruby还是python, 最终选择了python, 
    因为他考虑到国内情况, 如果用ruby可能后继无人, 中文资料少, 起步较晚,
    而当时python也很多人开始学习了(国内), 就选了pythontwitter, javaeye也是rails搭建的, 虽然现在有传说twitter要转java,
    但rails相对php的框架来说, 还算是比较稳定。
      

  13.   

    顺便说一下, 当年ROR出横空出世, 很多人都认为他能撼动php界, 
    但是, 结果没有, 因为技术影响市场的能力较弱, 而市场决定技术才是主要因素,和动力。php很多框架当年兴起也是受了ROR的模式影响而诞生, 
    好像现在的google+是为对抗fackbook而生。但ROR的优点也和社区文化也可以多多学习。
      

  14.   

    这是一篇我订阅了google的rails群的一条招聘信息, 給你们看一下, 
    如果普通的phper有这个收入, 那真是福气。Hey there,
    We're a UK startup looking for a RoR developer to provide support to
    an existing developer on a product that has already been through
    several iterations. I've listed a couple of the core skills below.Required skills:
    * Ruby on Rails
    * Test Unit / RSpec
    * Javascript
    * PostgreSQL
    * Git / Github
    * HAML
    * SASSNice to haves:
    * Mootools and JQuery
    * Shoulda
    * Cucumber
    * Solr
    * CSSThis is a £200 a day job so if anyone's interested, please send your
    CV and/or questions to [email protected].
    Thank you
    Spela那个符号是英镑。