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

时间:2013-02-14 10:51:18

标签: php methods arguments

有人可以向我解释这个吗?

这两种方法有什么区别?

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

2 个答案:

答案 0 :(得分:6)

它被称为type hinting

function some_function($foo)
{
}

期望在调用

时传递给some_function的参数
function some_function(bar $foo)
{
}

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

修改

提示类型的价值是什么?

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

答案 1 :(得分:1)

使用这种方法:

function some_function($foo) {
}

您期望在函数$foo

中内部调用一个参数

有了这个:

function some_function(foo $foo) {
}

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