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

PHP函数参数前的@是什么意思?

  •  
  •   OnlyBlue · 2011-10-11 21:16:23 +08:00 · 4686 次点击
    这是一个创建于 4788 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有这么一个句子:

    ClassA::init(@$server, @$path);

    其中两个@是什么意思呢?
    11 条回复    1970-01-01 08:00:00 +08:00
    harryxu
        1
    harryxu  
       2011-10-11 21:31:33 +08:00
    我的理解就是防止报错,比如 $server 没有定义和赋值过,那么 xxx(@$server) 传进去的应该就是null,而不会出现报错页面。
    mywaiting
        2
    mywaiting  
       2011-10-11 21:34:11 +08:00
    顺便说一句,这个@很耗费性能的
    OnlyBlue
        3
    OnlyBlue  
    OP
       2011-10-11 21:44:34 +08:00
    @harryxu 那就是和函数前面的@是相同的作用,即用来隐藏警告了。
    yesmeck
        4
    yesmeck  
       2011-10-11 21:45:12 +08:00
    强烈不建议用@!碰到过几次莫名奇妙的问题,搞好久最后发现是因为@导致不报错
    OnlyBlue
        5
    OnlyBlue  
    OP
       2011-10-11 21:48:04 +08:00
    @mywaiting 记住了,谢谢了!
    OnlyBlue
        6
    OnlyBlue  
    OP
       2011-10-11 21:58:37 +08:00
    @yesmeck 当将其放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
    Sunyanzi
        7
    Sunyanzi  
       2011-10-11 22:01:15 +08:00
    darasion
        8
    darasion  
       2011-10-11 22:03:21 +08:00
    @是为了偷懒对付事用的。
    OnlyBlue
        9
    OnlyBlue  
    OP
       2011-10-11 22:04:46 +08:00
    @Sunyanzi 谢了,我刚才找了一些中文资料看了,大概理解了是什么意思。
    OnlyBlue
        10
    OnlyBlue  
    OP
       2011-10-11 22:05:25 +08:00
    @darasion 也会制造隐患吧?
    harryxu
        11
    harryxu  
       2011-10-11 22:14:47 +08:00
    感觉一般最好不要用把,通常在好的php代码里不太会看到有用@的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1177 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:40 · PVG 02:40 · LAX 10:40 · JFK 13:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.