PHP闭包函数详解

Jul 29, 2016 am 09:03 AM
example function message product

匿名函数也叫闭包函数(closures允许创建一个没有指定没成的函数,最经常用作回调函数参数的值。

闭包函数没有函数名称,直接在function()传入变量即可 使用时将定义的变量当作函数来处理

  $cl = function($name){
    return sprintf('hello %s',name);
  }
  echo $cli('fuck')`
Salin selepas log masuk

直接通过定义为匿名函数的变量名称来调用

echo preg_replace_callback('~-([a-z])~', function ($match) {
  return strtoupper($match[1]);
}, 'hello-world');`
Salin selepas log masuk

使用use

$message = 'hello';
$example = function() use ($message){
  var_dump($message);
};
echo $example();
//输出hello
$message = 'world';
//输出hello 因为继承变量的值的时候是函数定义的时候而不是 函数被调用的时候
echo $example();
//重置为hello
$message = 'hello';
//此处传引用
$example = function() use(&$message){
 var_dump($message);
};
echo $example();
//输出hello
$message = 'world';
echo $example();
//此处输出world
//闭包函数也用于正常的传值
$message = 'hello';
$example = function ($data) use ($message){
  return "{$data},{$message}";
};

echo $example('world');

Salin selepas log masuk

example

class Cart{
  //在类里面定义常量用 const 关键字,而不是通常的 define() 函数。
  const PRICE_BUTTER = 1.00;
  const PRICE_MILK  = 3.00;
  const PRICE_EGGS  = 6.95;

  protected $products = [];
  public function add($product,$quantity){
    $this->products[$product] = $quantity;
  }
  public function getQuantity($product){
    //是否定义了
    return isset($this->products[$product])?$this->products[$product]:FALSE;
  }
  public function getTotal($tax){
    $total = 0.0;
    $callback = function($quantity,$product) use ($tax , &$total){
      //constant 返回常量的值
      //__class__返回类名
      $price = constant(__CLASS__."::PRICE_".strtoupper($product));

      $total += ($price * $quantity)*($tax+1.0);
    };
    //array_walk() 函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数
    array_walk($this->products,$callback);
    //回调匿名函数
    return round($total,2);

  }
}


$my_cart = new Cart();
$my_cart->add('butter',1);
$my_cart->add('milk',3);
$my_cart->add('eggs',6);


print($my_cart->getTotal(0.05));
Salin selepas log masuk

以上就是关于PHP闭包函数的相关内容,希望对大家的学习有所帮助。

以上就介绍了PHP闭包函数详解,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah maksud fungsi? Apakah maksud fungsi? Aug 04, 2023 am 10:33 AM

Fungsi bermaksud fungsi. Ia adalah blok kod yang boleh digunakan semula dengan fungsi tertentu Ia boleh menerima parameter input, melakukan operasi tertentu, dan mengembalikan hasil daripada blok yang boleh digunakan semula. kod untuk meningkatkan kebolehgunaan semula dan kebolehselenggaraan kod.

Cara menggunakan elemen-tambah untuk memanggil mesej dalam vue3 Cara menggunakan elemen-tambah untuk memanggil mesej dalam vue3 May 17, 2023 pm 03:52 PM

vue3 menggunakan elemen-tambah untuk memanggil persekitaran mesej: vue3+typescript+element-plus1 Selepas pengenalan global elemen, elemen telah menambahkan kaedah global $message dalam app.config.globalProperties, jadi anda boleh menggunakan mounted(){(. thisasany) secara langsung dalam optionsAPI $message.success("this.$message");}2

Apakah tujuan fungsi 'enumerate()' dalam Python? Apakah tujuan fungsi 'enumerate()' dalam Python? Sep 01, 2023 am 11:29 AM

Dalam artikel ini, kita akan belajar tentang fungsi enumerate() dan tujuan fungsi "enumerate()" dalam Python. Apakah fungsi enumerate()? Fungsi enumerate() Python menerima pengumpulan data sebagai parameter dan mengembalikan objek penghitungan. Objek penghitungan dikembalikan sebagai pasangan nilai kunci. Kuncinya ialah indeks yang sepadan dengan setiap item, dan nilainya ialah item. Syntax enumerate(iterable,start) Parameters iterable - Yang diluluskan dalam pengumpulan data boleh dikembalikan sebagai objek enumeration, dipanggil iterablestart - Seperti namanya, indeks permulaan objek enumeration ditakrifkan oleh permulaan. kalau kita abaikan

Penjelasan terperinci tentang peranan dan fungsi jadual MySQL.proc Penjelasan terperinci tentang peranan dan fungsi jadual MySQL.proc Mar 16, 2024 am 09:03 AM

Penjelasan terperinci tentang peranan dan fungsi jadual MySQL.proc ialah sistem pengurusan pangkalan data relasi yang popular Apabila pembangun menggunakan MySQL, mereka sering melibatkan penciptaan dan pengurusan prosedur tersimpan (StoredProcedure). Jadual MySQL.proc ialah jadual sistem yang sangat penting Ia menyimpan maklumat yang berkaitan dengan semua prosedur tersimpan dalam pangkalan data, termasuk nama, definisi, parameter, dsb. prosedur tersimpan. Dalam artikel ini, kami akan menerangkan secara terperinci peranan dan kefungsian jadual MySQL.proc

Penggunaan dan fungsi fungsi Vue.use Penggunaan dan fungsi fungsi Vue.use Jul 24, 2023 pm 06:09 PM

Penggunaan dan Fungsi Fungsi Vue.use Vue ialah rangka kerja bahagian hadapan yang popular yang menyediakan banyak ciri dan fungsi berguna. Salah satunya ialah fungsi Vue.use, yang membolehkan kami menggunakan pemalam dalam aplikasi Vue. Artikel ini akan memperkenalkan penggunaan dan fungsi fungsi Vue.use dan memberikan beberapa contoh kod. Penggunaan asas fungsi Vue.use adalah sangat mudah, cuma panggilnya sebelum Vue diwujudkan, menghantar pemalam yang anda ingin gunakan sebagai parameter. Berikut ialah contoh mudah: //Perkenalkan dan gunakan pemalam

clearstatcache() fungsi dalam PHP clearstatcache() fungsi dalam PHP Sep 07, 2023 am 09:33 AM

Fungsi clearstatcache() digunakan untuk mengosongkan cache status fail. PHP menyimpan cache maklumat yang dikembalikan oleh fungsi berikut −stat()lstat()file_exists()is_writable()is_readable()is_executable()is_file()is_dir()filegroup()fileowner()filesize()filetype()fileperms() Apakah untuk melakukan Untuk memberikan prestasi yang lebih baik. Sintaks voidclearstatecache() Parameter NA Nilai pulangan clearstatcache(

Bagaimanakah SpringBoot memuatkan berbilang fail konfigurasi untuk bertukar antara persekitaran pembangun dan produk? Bagaimanakah SpringBoot memuatkan berbilang fail konfigurasi untuk bertukar antara persekitaran pembangun dan produk? May 12, 2023 pm 11:58 PM

1. Penukaran berbilang persekitaran dilaksanakan dalam SpringBoot Dalam SpringBoot, sebagai tambahan kepada application.properties, nama fail fail konfigurasi lain yang kami cipta perlu memenuhi format aplikasi-{profile}.properties, di mana {profile} sepadan dengan. pengecam persekitaran anda (tidak semestinya Ia adalah fail .properties atau .yml) dan nilai {profile} yang sepadan disesuaikan oleh pembangun (seperti dev, product Apabila projek dimulakan, anda hanya perlu menambah parameter yang sepadan). dan springboot akan membacanya Masa untuk membuat profil. Konfigurasi profil khusus

file_exists() fungsi dalam PHP file_exists() fungsi dalam PHP Sep 14, 2023 am 08:29 AM

Kaedah file_exists menyemak sama ada fail atau direktori wujud. Ia menerima sebagai hujah laluan fail atau direktori untuk diperiksa. Inilah kegunaannya - ia berguna apabila anda perlu mengetahui sama ada fail wujud sebelum memprosesnya. Dengan cara ini, apabila mencipta fail baharu, anda boleh menggunakan fungsi ini untuk mengetahui sama ada fail itu sudah wujud. Syntax file_exists($file_path) Parameter file_path - Tetapkan laluan fail atau direktori untuk disemak kewujudan. Diperlukan. Kembalikan kaedah file_exists() kembali. Mengembalikan TrueFalse jika fail atau direktori wujud, jika fail atau direktori tidak wujud Contoh mari kita lihat semakan untuk fail "candidate.txt" dan walaupun fail

See all articles