Fungsi yang boleh dibuat tanpa sebarang nama khusus dan digunakan sebagai argumen input dalam skrip PHP, dikenali sebagai fungsi tanpa nama. Fungsi ini dilaksanakan menggunakan kelas Penutupan. Proses memberikan fungsi tanpa nama kepada pembolehubah adalah sama seperti mana-mana sintaks tugasan lain. Dengan menghantar pembolehubah daripada skop induk kepada konstruk bahasa penggunaan, fungsi tanpa nama daripada skop kanak-kanak, boleh mewarisi pembolehubah itu.
IKLAN Kursus Popular dalam kategori ini PEMBANGUN PHP - Pengkhususan | 8 Siri Kursus | 3 Ujian Olok-olokMulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Sintaks:
Fungsi tanpa nama tidak membawa sebarang nama:
function($arg1,$arg2,….,$argN){ //The definition for the anonymous function };
Terdapat pelbagai objektif yang boleh dicapai dengan menggunakan fungsi tanpa nama dalam membangunkan pengekodan PHP yang berkesan. Fungsi tanpa nama mempamerkan kefungsian berbeza berdasarkan jenis kes penggunaan yang berbeza untuk fungsi tersebut digunakan.
Lima kes penggunaan utama diberikan di bawah:
Fungsi tanpa nama boleh digunakan untuk menetapkan nilai kepada pembolehubah. Ia mengikut sintaks yang sama seperti operasi tugasan lain.
Contoh:
Coretan kod di bawah digunakan untuk menetapkan nilai input yang diberikan kepada nilai output dan mencetak nilai menggunakan pembolehubah output.
Kod:
<?php $Var = function($value) //Anonymous function is used to assign value to variable $Var { //Anonymous function definition printf("The assigned value is: %s\r\n", $value); }; //Calling the anonymous function using the assigning variable $Var with a string value input $Var('A string value is assigned'); //Calling the anonymous function using the assigning variable $Var with a integer value input $Var(35); ?>
Output:
Nilai input yang diberikan bagi rentetan jenis dan integer dicetak melalui panggilan fungsi tanpa nama seperti yang ditunjukkan di bawah:
Ciri mentakrifkan fungsi tanpa nama memainkan peranan penting dalam mencipta fungsi panggil balik dalam talian.
Dalam kes ini, fungsi tanpa nama boleh dihantar ke fungsi lain sebagai hujah input.
Kod di bawah ditulis untuk mentakrifkan fungsi panggil balik preg_replace_callback.
Mempunyai fungsi tanpa nama sebagai salah satu parameter inputnya.
Kod:
<?php //creating callback function using PHP anonymous function // preg_replace_callback is the calling function echo preg_replace_callback('~-([a-z])~', function ($input) { //Anonymous function definition return strtoupper($input[1]); }, 'This is an anonymous callback function!');//End of the definition of the callback function ?>
Output:
Pada pelaksanaan skrip PHP, fungsi panggil balik dicetuskan dan output daripada fungsi tanpa nama dicetak pada tetingkap output seperti ditunjukkan di bawah:
Fungsi tanpa nama boleh digunakan untuk mewarisi pembolehubah daripada skop induk.
Kes penggunaan ini tidak menyokong pembolehubah super global, $ini atau mana-mana pembolehubah parameter yang mempunyai nama yang sama.
Contoh:
Kod:
<?php $input_text = 'Initial message'; $outputVar = function () { //Anonymous function definition var_dump($input_text); }; $outputVar(); // Inherit the variable $input_text by value $outputVar = function () use ($input_text) { var_dump($input_text); }; $outputVar(); // Inherit the variable $input_text by-reference $outputVar = function () use (&$input_text) { var_dump($input_text); }; $outputVar(); // Modifying the variable value of parent scope from the function call $input_text = ' Next message'; $outputVar(); // Inserting regular argument along with parent scope variable $outputVar = function ($arg) use ($input_text) { var_dump($arg . ' ' . $input_text); }; $outputVar("Random message"); ?>
Output:
Output terhasil daripada kod di atas dihasilkan seperti yang ditunjukkan di bawah:
Untuk PHP versi 5.4 dan seterusnya, sekiranya berlaku pengisytiharan mana-mana kelas, kelas terikat kepada ciri fungsi tanpa nama secara lalai. Ini menjadikan pembolehubah '$this' tersedia dalam skop mana-mana fungsi tanpa nama yang ditakrifkan dalam kelas.
Contoh:
Kod:
<?php class AnonymousClass { public function Classfunction() { return function() { var_dump($this); //Retrieves the dump information of class object using $this variable,once //it is created }; } } $Classobject = new AnonymousClass; $function = $Classobject->Classfunction(); $function(); ?>
Output:
Maklumat pembuangan objek dari kelas 'AnonymousClass' dicetak pada tetingkap output seperti ditunjukkan di bawah:
Pada penciptaan objek, jika penutupan dibuat seketika daripada skop objek yang sama dan didaftarkan, ia mewujudkan rujukan bulat yang mengakibatkan pencegahan kepada pemusnahan serta-merta objek. Penggunaan fungsi tanpa nama statik boleh membolehkan skrip mengatasi kelewatan.
Analisis perbandingan penggunaan fungsi tanpa nama biasa dan fungsi tanpa nama statik ditunjukkan oleh contoh di bawah.
Contoh:
Kes 1: Tanpa menggunakan fungsi tanpa nama statik
Kod:
<?php class TrialClass { private $AnonymousVar; public function __construct() { $this->AnonymousVar = function () { }; } public function __destruct() { echo "Destruction function is called"; } } new TrialClass; echo "After the object is being defined"; echo "\n"; ?>
Output:
Kes 2: Termasuk fungsi tanpa nama statik
Kod:
<?php class TrialClass { private $AnonymousVar; public function __construct() { $this->closure = self::createClosure(); } public static function createClosure() { return function () { }; } public function __destruct() { echo "Destruction function is called"; } } new TrialClass; echo "\n"; echo "\n"; echo "After the object is being defined"; echo "\n"; echo "\n"; ?>
Output:
Atas ialah kandungan terperinci Fungsi Tanpa Nama PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!