2013-01-10 1 views
0

В течение многих лет я был кусает пули, пытающиеся написать функциональный код в PHP с взломов, как это:Что относится к типу обратного вызова в отношении array_map()?

class Foo { 
    function addOne($wu) { 
     return $wu + 1; 
    } 
    function getBiggerThings(array $things) { 
     $that = $this; 
     return array_map(function ($i) use ($that) { 
      return $that->addOne($i); 
     }, $things); 
} 

Сегодня коллега указал, что я мог бы написать:

return array_map(array($this, 'addOne'), $things); 

я не могу найти любую документацию по этому вопросу на php.net. Я неправильно читаю callback type documentation?

+0

Посмотрите здесь: http://php.net/language.types.callable - все это задокументировано. – hakre

ответ

4

Я хотел бы подчеркнуть следующие из commented PHP docs:

Способ создан экземпляр объекта передается как массив, содержащий объект с индексом 0 и метод имя по индексу 1.

Это на самом деле с довольно долгого времени, так сказать, до PHP 5.3, который позволил вам анонимную функцию «обходной путь».

+0

Какой превосходный пример того, почему вы не должны использовать пассивный чехол на английском языке. Я читал это как «это то, что PHP делает для вас». – kojiro

+0

Вы имеете в виду предложение из руководства? – hakre

+0

да, вот что я имею в виду. – kojiro

4

Это отражено в the documentation about the Callable type

+0

Не опускаясь, потому что это мой вопрос, и я ценю ответ, но [ссылки только ответы не поощряются] (http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-другие -really-хорошие-ответы). – kojiro

+0

@kojiro ну, вы попросили ссылку, а не на пример или объяснение документов ... –

+0

Я спросил *, где он был задокументирован *, который не совпадает с запросом ссылки. На самом деле, я уже прочитал эту страницу и не понял ответ, который был написан там (по той причине, что я описал в ответе @ hakre). Он потребовал, чтобы он вызвал фактическое предложение для меня, чтобы понять, что предложение описывает то, о чем я просил. – kojiro

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