Anda punya jawaban di sini: https://stackoverflow.com/a/29730810/4629261
Perbedaannya adalah, bahwa [ Closure
] harus merupakan fungsi anonim, di mana [ callable
] juga bisa menjadi fungsi normal.
Anda dapat melihat / menguji ini dengan contoh di bawah ini dan Anda akan melihat bahwa Anda akan mendapatkan kesalahan untuk yang pertama:
function callFunc1(Closure $closure) {
$closure();
}
function callFunc2(Callable $callback) {
$callback();
}
function xy() {
echo 'Hello, World!';
}
callFunc1("xy"); // Catchable fatal error: Argument 1 passed to callFunc1() must be an instance of Closure, string given
callFunc2("xy"); // Hello, World!
Jadi jika Anda hanya ingin mengetik petunjuk gunakan fungsi anonim: Closure
dan jika Anda juga ingin mengizinkan fungsi normal gunakan callable
sebagai petunjuk jenis.
http://php.net/manual/en/class.closure.php
http://php.net/manual/en/language.types.callable.php
Dalam dokumen Magento, mereka menyarankan untuk menggunakan [callable]
Sebelum daftar argumen metode asli, sekitar metode menerima panggilan yang akan memungkinkan panggilan ke metode berikutnya dalam rantai. Ketika callable dipanggil, plugin berikutnya atau fungsi yang diamati dipanggil.
Saat Anda membungkus metode yang menerima argumen, plugin Anda juga harus menerima argumen itu dan Anda harus meneruskannya ketika Anda memohon proses yang dapat dilalui.
http://devdocs.magento.com/guides/v2.0/extension-dev-guide/plugins.html#defining-a-plugin