They are both almost one and a same – anonymous function, but with some differences.
A closure is essentially the same as a lambda apart from it can access variables outside the scope that it was created.
С use в closure вземаш дадените променливи ДО МОМЕНТА на дефинирането им.
$user = 'Philip'; $greeting = function() use ($user) { echo "Hello $user"; }; $user = 'John'; $greeting(); // Returns "Hello Philip"
Защо Philip?
Защото когато по-горе сме дефинирали closure, $user е имал стойност Philip, нищо, че после, преди да го извикаме, се е променил на John.
Затова, още казано, closure „правят снимка“ на променливите до момента на дефинирането си, явно и затова се казва closure – затваряне.
Пък иначе дадените променливи, нека после, след дефинирането на closure, да се променят колкото си искат.