【问题标题】:Difference between ($foo) and (foo $foo) as an arguments($foo) 和 (foo $foo) 作为参数的区别
【发布时间】:2013-01-30 03:41:55
【问题描述】:

谁能给我解释一下?

这两种方法有什么区别?

function some_function($foo)
    {
    }

function some_function(foo $foo)
    {
    }

就我而言

public function validate_something(notice $notice, $tok_id, $captcha) 
{
    if(something === true) {
        $notice->add('info', 'Info message');
    } else {
        $notice->add('error', 'Error message');
    }
}

$notice 是类通知的对象

class notice {

    private $_notice = array();

    public function get_notice(){
        return $this->_notice;
    }

    public function add($type, $message) {
        $this->_notice[$type][] = $message;
    }
    ...
}

【问题讨论】:

    标签: php methods arguments


    【解决方案1】:

    它叫type hinting

    function some_function($foo)
    {
    }
    

    期望在调用 some_function 时将参数传递给它

    function some_function(bar $foo)
    {
    }
    

    期望数据类型(类、抽象或接口或数组) bar 的参数在调用时传递给 some_function....致命错误

    编辑

    类型提示的价值是什么?

    • 因为您的代码不需要使用is_ainstance_of 来 验证论点。
    • 减少防御性编码人员的编码。
    • 函数/方法对参数进行自我记录。

    【讨论】:

      【解决方案2】:

      用这个方法:

      function some_function($foo) {
      }
      

      您期望在函数$foo 内部调用一个参数

      有了这个:

      function some_function(foo $foo) {
      }
      

      您期待一个名为 $foo 的参数,但它必须是 foo 类型(foo 类的对象)

      【讨论】:

        猜你喜欢
        • 2019-05-27
        • 2010-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-23
        • 2017-07-04
        • 2016-12-01
        • 1970-01-01
        相关资源
        最近更新 更多