($ foo)和(foo $ foo)之间的差异作为参数

tro*_*oks 1 php methods arguments

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

这两种方法有什么区别?

function some_function($foo)
    {
    }
Run Code Online (Sandbox Code Playgroud)

和

function some_function(foo $foo)
    {
    }
Run Code Online (Sandbox Code Playgroud)

在我的情况下

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

$ notice是课堂通知的对象

class notice {

    private $_notice = array();

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

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

Mar*_*ker 6

它被称为类型提示

function some_function($foo)
{
}
Run Code Online (Sandbox Code Playgroud)

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

function some_function(bar $foo)
{
}
Run Code Online (Sandbox Code Playgroud)

期望在调用时将数据类型(类,抽象或接口或数组)条的参数传递给some_function ....如果传递的参数不是此数据类型,则会导致捕获致命错误

编辑

提示类型的价值是什么?

  • 因为您的代码不需要使用is_a或instance_of验证参数.
  • 减少防御性编码员的编码.
  • 函数/方法是参数的自我记录.