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

有没有了解内核的 PHP 大神,问一个奇特语句的问题

  •  
  •   huijiewei · 2015-05-22 18:42:55 +08:00 · 3399 次点击
    这是一个创建于 3478 天前的主题,其中的信息可能已经有所发展或是发生改变。

    return (array('code' => '1', 'message' => 'success ', data => $row));

    这种代码在强制关闭 PHP 所有错误提示的情况下,能通过吗?

    第 1 条附言  ·  2015-05-24 18:34:58 +08:00
    谢谢各位了。

    不要问我这个代码为啥这么写。

    这份代码只是我现在维护的代码的一部分。系统里面比这个夸张的代码多了去了。

    每次我看到这种代码我都在想这种错误要不要改呢,万一这个就是人家要的效果呢?毕竟开发测试正式服务器的PHP错误提示都是全关的。

    那么第二个问题来,这种代码是重写好呢,还是改好呢?
    14 条回复    2015-06-01 09:19:29 +08:00
    Septembers
        1
    Septembers  
       2015-05-22 18:44:45 +08:00
    不能
    语法错误
    oott123
        2
    oott123  
       2015-05-22 18:55:40 +08:00
    我比较倾向于,data 会被当成一个常量,然后因为你没有定义这个常量,所以会被当成字符串 "data" 解析并产生一个 WARNING 错误。
    不过这和内核没有什么关系。
    cevincheung
        3
    cevincheung  
       2015-05-22 18:56:52 +08:00
    这一点都不奇特
    feiyuanqiu
        4
    feiyuanqiu  
       2015-05-22 18:58:51 +08:00 via iPhone
    @oott123 实际上 data 会被转换为字符串
    feiyuanqiu
        5
    feiyuanqiu  
       2015-05-22 18:59:51 +08:00
    @oott123 抱歉,手机上没看清楚
    qaulau
        6
    qaulau  
       2015-05-22 19:22:04 +08:00
    不能,会抛出 Notice 提示使用未定义常量 data
    hiboshi
        7
    hiboshi  
       2015-05-22 20:13:37 +08:00
    肯定不能通过语法错误

    data 必须加'
    solaro
        8
    solaro  
       2015-05-22 20:30:39 +08:00
    直接这样是可以的:
    return (array('code' => '1', 'message' => 'success ', 'data' => $row));
    但是直接这样是不行的,因为data不是变量也不是常量,即便是也不能这么用。
    return (array('code' => '1', 'message' => 'success ', data => $row));
    solaro
        9
    solaro  
       2015-05-22 20:33:18 +08:00
    还有,这种写法万分不推荐,看似省事,其实万分不规范,看了令人抓狂
    $data = [
    'code' => '1',
    'message' => 'success ',
    'data => $row
    ];

    return ($data);

    酱紫不是好看多了?用phpstorm吧骚年,LINUX 、WIN 、OSX都有
    Actrace
        10
    Actrace  
       2015-05-24 07:32:04 +08:00
    我是来推销netbeans的,用netbeans会直接提示你未定义的常量~
    mingyun
        11
    mingyun  
       2015-05-24 09:11:03 +08:00
    return 为什么要加括号呢
    Jaylee
        12
    Jaylee  
       2015-05-24 14:08:40 +08:00
    @mingyun 同问 return后面为什么要括号
    thankyourtender
        13
    thankyourtender  
       2015-05-24 18:37:19 +08:00
    类型推导和类型定义是不一样的,这要是能有默认的数据类型,那基础的数据类型里面怎么分呢?
    走叉了
    coin
        14
    coin  
       2015-06-01 09:19:29 +08:00
    唉,过不去的吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1777 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:36 · PVG 00:36 · LAX 08:36 · JFK 11:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.