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
)
Комментариев нет :
Отправить комментарий