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

没搞懂 PHP 的 PSR2 的规范?

  •  
  •   jam1024 · 2018-08-13 17:22:54 +08:00 · 4255 次点击
    这是一个创建于 2300 天前的主题,其中的信息可能已经有所发展或是发生改变。

    PSR2 里提到: 方法名称 必须 符合 camelCase() 式的小写开头驼峰命名规范

    但是 php 默认有一大堆不符合改规范的函数,如:

    file_get_contents , json_encode

    25 条回复    2018-08-25 16:22:14 +08:00
    zsdroid
        1
    zsdroid  
       2018-08-13 17:27:23 +08:00
    PSR2 针对 php 的,内置函数不是 php 开发的
    jam1024
        2
    jam1024  
    OP
       2018-08-13 17:28:30 +08:00
    @zsdroid 什么叫“内置函数不是 php 开发的”
    demonchang
        3
    demonchang  
       2018-08-13 17:30:44 +08:00
    你自己写的 php 要遵守这个规范。。
    zsdroid
        4
    zsdroid  
       2018-08-13 17:30:46 +08:00   ❤️ 1
    @jam1024 #2 内置函数是 c 开发的啊,更何况 php 出来的时候还没有 psr1 呢,难道出来一个规范就要把 php 全部重构吗
    feiyuanqiu
        5
    feiyuanqiu  
       2018-08-13 17:31:17 +08:00   ❤️ 1
    1. 制定 PSR 的 PHP-FIG 不是 PHP 官方组织,约束不到核心开发
    2. PHP 内置函数名是历史遗留问题,现今也没看到任何要整改的迹象,PHPer 不看重这个
    jam1024
        6
    jam1024  
    OP
       2018-08-13 17:32:16 +08:00
    @feiyuanqiu 编起码来感觉各种命名不一混用,有点蛋疼
    mjVtb96d2bap2u3Z
        7
    mjVtb96d2bap2u3Z  
       2018-08-13 17:34:23 +08:00 via Android
    PSR2 并不是 php 官方定的,最初只是几个开源开发者定的协作规范。后来其他开发者遵循这个规范带来很大方便,才逐渐流行开来。
    chinvo
        8
    chinvo  
       2018-08-13 17:34:36 +08:00
    原因就不说了,如果感觉不爽,可以用一个 helper function 把你要用的内置函数封装下
    WuwuGin
        9
    WuwuGin  
       2018-08-13 17:36:34 +08:00
    1.psr2 只是规范,不是一个强制标准
    2.php 的内置函数 != 方法
    3.php 历史遗留问题需要考虑兼容性。
    jam1024
        10
    jam1024  
    OP
       2018-08-13 17:46:12 +08:00
    @WuwuGin 了解了
    allgy
        11
    allgy  
       2018-08-13 18:34:20 +08:00
    内置函数开发的时候连 FIG 这个组织都没诞生
    sagaxu
        12
    sagaxu  
       2018-08-13 19:36:40 +08:00 via Android
    method 和 function 的要求是不同的
    pynix
        13
    pynix  
       2018-08-13 19:38:36 +08:00
    退坑保平安。
    SimbaPeng
        14
    SimbaPeng  
       2018-08-13 19:42:01 +08:00 via Android
    php 的宗旨是 freestyle,233333
    zn
        15
    zn  
       2018-08-13 20:12:47 +08:00
    哥哥,知道什么叫历史包裹,什么叫向后兼容性吗?
    hubqin
        16
    hubqin  
       2018-08-13 20:24:44 +08:00 via Android
    按我的理解,方法是指类的方法,和全局的函数是不一样的概念。
    shiny
        17
    shiny  
       2018-08-13 20:33:05 +08:00
    方法是 method, 函数是 function,用中文的时候稍不注意就会混淆两者。
    anewg
        18
    anewg  
       2018-08-13 20:36:31 +08:00
    对这个敏感的还是别用 php 了
    KgM4gLtF0shViDH3
        19
    KgM4gLtF0shViDH3  
       2018-08-13 21:01:25 +08:00 via iPhone
    @zn #15 是包袱吧
    ninerec
        20
    ninerec  
       2018-08-13 21:55:52 +08:00
    个人的理解以及基于其上的建议:
    1. 类似 PHP 的内置函数&自定义全局的 function,使用 snake_case ;
    2. 自定义的类.方法,方法名使用 camelCase;
    3. PSR 是用来约束社区&指导自己的编码规范的,别太纠结。
    zlhsvc
        21
    zlhsvc  
       2018-08-13 23:50:56 +08:00
    其实这个很随意的,公司统一下规范就好了
    Nick66
        22
    Nick66  
       2018-08-14 11:23:50 +08:00
    函数和方法还是有区别的,内置函数是历史遗留问题
    bapijun
        23
    bapijun  
       2018-08-17 11:56:54 +08:00
    php 函数哪个是遗留问题,没办法的事情,比这个更牛逼更操蛋的遗留问题有的是
    bapijun
        24
    bapijun  
       2018-08-17 11:59:13 +08:00
    psr 的意义,在于现在主流的 php 程序员都这么干,你看别人的代码这样写,自己的代码也这么命名,大家都舒服,
    hp66722667
        25
    hp66722667  
       2018-08-25 16:22:14 +08:00
    来搞 python 默认 a_b_c(),特别统一
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2820 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:48 · PVG 15:48 · LAX 23:48 · JFK 02:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.