2013-02-14 2 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, когда она вызывается .... если вы передадите аргумент, а не этого типа данных, вы получите catchable фатальную ошибку

EDIT

что такое значение т ype намекает?

  • Потому что ваш код не тогда нужно использовать is_a или instance_of к аргументы Validate.
  • Сокращает кодирование защитных кодеров.
  • Функции/методы самодокументированы для аргументов.
1

С помощью этого метода:

function some_function($foo) { 
} 

Вы ожидающей один параметр, который называется внутренне в функции $foo

С этим:

function some_function(foo $foo) { 
} 

Вы ожидающей один параметр, который называется $foo, но он должен быть типа foo (объект класса foo)

Смежные вопросы