1

有人可以向我解释一下吗?

这两种方法有什么区别?

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;
    }
    ...
}
4

2 回答 2

6

这叫做类型提示

function some_function($foo)
{
}

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

function some_function(bar $foo)
{
}

期望在调用时将数据类型(类、抽象或接口或数组) bar 的参数传递给 some_function .... 如果传递的参数不是此数据类型,您将收到可捕获的致命错误

编辑

类型提示的价值是什么?

  • 因为您的代码不需要使用is_ainstance_of验证参数。
  • 减少防御性编码人员的编码。
  • 函数/方法是自文档的参数。
于 2013-02-14T10:53:16.107 回答
1

使用这种方法:

function some_function($foo) {
}

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

有了这个:

function some_function(foo $foo) {
}

您期望调用一个参数,$foo但它必须是 foo 类型(foo 类的对象)

于 2013-02-14T10:54:55.313 回答