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();
Чутье подсказывает, что лучше избегать этого метода. Почему? Пока не понял.
Подписаться на:
Комментарии к сообщению
(
Atom
)
Комментариев нет :
Отправить комментарий