2013-02-14 71 views
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'); 
    } 
} 

$通知书类通知的对象

class notice { 

    private $_notice = array(); 

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

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

回答

6

这就是所谓的type hinting

function some_function($foo) 
{ 
} 

期望一个参数传递到some_function当它被称为

function some_function(bar $foo) 
{ 
} 

来料的数据类型(类,抽象的或接口,或阵列)巴的参数传递到some_function当它被称为....如果你传递一个参数,它是此数据类型的不是,你会得到开捕致命错误

编辑

什么是T的值ype暗示?

  • 因为你的代码并不那么就需要使用is_ainstance_of到 验证参数。
  • 减少防御性编码器的编码。
  • 函数/方法是自我记录的参数。
1

使用这种方法:

function some_function($foo) { 
} 

你希望在你的功能$foo

内部调用有了这一个参数:

function some_function(foo $foo) { 
} 

你期待一个参数叫$foo但它必须是foo类型(foo类的对象)

相关问题