PHP. Ключевое слово use в замыканиях

Комментариев нет

Есть замыкание, вызов которого мы не контроллируем. Пример:

$users = User::with(array('posts' => function($query)
{
    $query->where('title', 'like', '%first%');

}))->get();

Что делать, если нужно передавать в замыкание какое-нибудь значение. Например, для третьего аргумента метода where? Первое, что пришло в голову:

$like = '%first%';
$users = User::with(array('posts' => function($query)
{
    $query->where('title', 'like', $like);
}))->get();

Это не сработает, потому что переменная $like не видна там, где будет вызвано замыкание.

Передать переменную в замыкание можно, используя ключегове слово use:

$like = '%first%';
$users = User::with(array('posts' => function($query) use ($like)
{
    $query->where('title', 'like', $like);

}))->get();

Чутье подсказывает, что лучше избегать этого метода. Почему? Пока не понял.


Комментариев нет :

Отправить комментарий