V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gouchaoer2
V2EX  ›  PHP

PHP 的类属性强类型要来了

  •  1
     
  •   gouchaoer2 · 2018-06-22 01:38:20 +08:00 via Android · 8503 次点击
    这是一个创建于 2349 天前的主题,其中的信息可能已经有所发展或是发生改变。
    https://wiki.php.net/rfc/typed_properties_v2

    rfc 是第二版,作者有 Nikita,所以大概率会采用

    现在 php 如果再来一个变量强类型的话,那 php 就顺利从 c 的胶水语言演变成 java 了
    33 条回复    2018-06-23 14:29:02 +08:00
    SimbaPeng
        1
    SimbaPeng  
       2018-06-22 01:46:29 +08:00 via Android   ❤️ 1
    php 和 java 差的只是一个强类型变量?
    feiyuanqiu
        2
    feiyuanqiu  
       2018-06-22 01:54:13 +08:00
    还不够,array 这玩意还是得靠 docblock 注释出元素类型才行,不然用途有限。nikita 柏林大学的 phd,想法多,估计下一步他就要提泛型的 rfc 了
    yunye
        3
    yunye  
       2018-06-22 02:29:00 +08:00 via Android
    还能不向后兼容了不成
    Actrace
        4
    Actrace  
       2018-06-22 03:32:30 +08:00
    强类型弱类型都不影响,作为 PHP 最大的优势,自动类型预判和相关的内存管理是不可能丢掉的。
    sagaxu
        5
    sagaxu  
       2018-06-22 07:01:28 +08:00 via Android
    强类型只是第一步,还要加上 JIT 和更好的 gc,然后是泛型和多线程,靠社区的力量,稳定版发布,奔 2030 年去了
    swcat
        6
    swcat  
       2018-06-22 07:14:42 +08:00 via iPhone
    韩大佬不是在弄也在弄 typephp
    zjsxwc
        7
    zjsxwc  
       2018-06-22 08:30:53 +08:00
    从注释变成了写类型,反正对 ide 用户来说使用区别不大。
    doubleflower
        8
    doubleflower  
       2018-06-22 08:52:55 +08:00
    和 java 一样的话何不直接用 java ?
    Seanfuck
        9
    Seanfuck  
       2018-06-22 09:00:59 +08:00   ❤️ 1
    这是在减弱 php 的优势!
    linxl
        10
    linxl  
       2018-06-22 09:02:45 +08:00
    并不是所有人学语言都跟喝水一样。
    alexzhou
        11
    alexzhou  
       2018-06-22 09:07:27 +08:00
    PHP 的历史糟粕太多,又要向下兼容
    m939594960
        12
    m939594960  
       2018-06-22 09:11:30 +08:00
    为啥不用 hhvm
    gouchaoer
        13
    gouchaoer  
       2018-06-22 10:38:23 +08:00
    @sagaxu 恕我直言,这是不太可能的。。。因为 php 照顾的肯定是 fpm 生态,而 fpm 生态里面 gc 已经够用了,而 jit 很难提高太多性能了,至于泛型那更是不需要的,多线程本来就有
    sunmonster
        14
    sunmonster  
       2018-06-22 10:39:01 +08:00
    @m939594960 hhvm 已经不兼容 php 了,怕有些库会出现莫名奇妙的问题,语法层面目前 php 其实没多大问题,如果能加上异步 async await 就好了,就像 hack 一样,但是直接用 hack 又怕某些库不兼容
    gouchaoer
        15
    gouchaoer  
       2018-06-22 10:40:36 +08:00
    变量强类型估计不会做,因为做了这个 php 就不再是脚本语言了,韩天峰在尝试搞强类型的 php 也就是 typephp,老实说我比较怀疑这个的应用场景
    haohappy
        16
    haohappy  
       2018-06-22 10:41:27 +08:00
    @sunmonster hhvm 支持 PHP5.2 就足够了 剩下的 随便你们去折腾了
    gouchaoer
        17
    gouchaoer  
       2018-06-22 10:45:43 +08:00
    @sunmonster 其实 async/await 以及 promise/yield 并不是一个好的解决阻塞的方案,和回调一样有 callback hell 问题,因为会有调用栈传染,最后搞得很复杂。。。你说的这个 rfc 里面可以找到: https://wiki.php.net/rfc/fiber,但是这个很鸡肋,zanphp/php-msf 等框架就是代表,很难很复杂。。。现在 swoole 有像 golang 那样的全协程了,php 在这里发是领先的: https://github.com/swoole/swoole-src/blob/master/examples/coroutine/coro_nested.php
    crist
        18
    crist  
       2018-06-22 11:55:45 +08:00
    真正的 PHPer 是不会用强类型的。
    scnace
        19
    scnace  
       2018-06-22 12:09:13 +08:00 via Android
    @gouchaoer 还以为你大号被封了 开小号发帖
    jasonchen168
        20
    jasonchen168  
       2018-06-22 14:17:30 +08:00
    走远了
    realpg
        21
    realpg  
       2018-06-22 15:00:42 +08:00
    弱类型是 php 最大的优势之一
    扯什么性能之类的,真正需要压榨这个的,完全可以不用 php
    abcbuzhiming
        22
    abcbuzhiming  
       2018-06-22 15:02:13 +08:00
    光这个有啥用,有没有编译时类型检查才是重点,动态语言的坑就在于没有类型检查
    ngg0707
        23
    ngg0707  
       2018-06-22 17:07:47 +08:00
    php 的“异常”和“错误”及其捕捉,我至今没太搞懂
    shijingshijing
        24
    shijingshijing  
       2018-06-22 17:11:19 +08:00 via iPhone
    很好,世界上最好的语言马上要晋级为宇宙最好的语言,没有之一
    wdlth
        25
    wdlth  
       2018-06-22 22:42:54 +08:00
    头部是<?thp

    后缀名是.thp ?

    不知道会不会出现 Deno 那类 issue
    sagaxu
        26
    sagaxu  
       2018-06-23 00:07:15 +08:00 via Android
    @gouchaoer async 和 await 哪来的 callback hell ?
    gouchaoer2
        27
    gouchaoer2  
    OP
       2018-06-23 10:38:13 +08:00 via Android
    @sagaxu 一个方法 async 了,调用栈都 async 啥的,在简单的例子里似乎很简单,在实际业务里会很复杂
    sagaxu
        28
    sagaxu  
       2018-06-23 11:05:33 +08:00 via Android
    @gouchaoer2 async 并没有传染性,同步方法里调用异步方法,或者异步方法里调用同步方法,都可以。只有需要 await 异步结果时,才需要将调用方 mark 为 async。
    gouchaoer2
        29
    gouchaoer2  
    OP
       2018-06-23 11:18:06 +08:00 via Android
    sagaxu
        30
    sagaxu  
       2018-06-23 11:45:13 +08:00 via Android
    @gouchaoer2 不要人云亦云,自己试试才知道。所谓传染性,这个观点很 php。
    gouchaoer2
        31
    gouchaoer2  
    OP
       2018-06-23 12:05:26 +08:00 via Android
    @sagaxu 你的意思是要截断这种 async 传染可以不用 await 而是直接处理 async 返回的 promise,也就是回调的模式对么。。。像这样: https://segmentfault.com/a/1190000007535316,在某种程度上来说这也算是解决方案。。。。另外你的这种把讨论上升到语言的说法让我不舒服
    chenxytw
        32
    chenxytw  
       2018-06-23 12:43:23 +08:00
    支持 typed php
    icy37785
        33
    icy37785  
       2018-06-23 14:29:02 +08:00 via iPhone
    弱类型是 PHP 的优势,为什么要强类型。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1029 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:04 · PVG 05:04 · LAX 13:04 · JFK 16:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.