Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Fungsi Tanpa Nama PHP

Fungsi Tanpa Nama PHP

王林
王林asal
2024-08-29 12:47:23453semak imbas

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-olok

Mulakan 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
};

Berbeza Jenis Kes Penggunaan

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:

1. Gunakan Kes 1

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:

Fungsi Tanpa Nama PHP

2. Gunakan Kes 2

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 PHP

3. Guna kes 3

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:

Fungsi Tanpa Nama PHP

4. Gunakan kes 4

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:

Fungsi Tanpa Nama PHP

5. Guna kes 5

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:

Fungsi Tanpa Nama PHP

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:

Fungsi Tanpa Nama PHP

Nota Tambahan

  • Pengikatan automatik kelas semasa kepada fungsi tanpa nama ialah tingkah laku lalai untuk PHP versi 5.4 dan seterusnya. Ini boleh dilarang dengan melaksanakan fungsi tanpa nama statik.
  • Ia meningkatkan prestasi kerana ia boleh digunakan untuk menentukan fungsi yang dimaksudkan untuk digunakan sekali sahaja. Fungsi tanpa nama boleh tersedia hanya untuk kerja yang perlu dilaksanakan daripada fungsi dan tidak kekal tersedia untuk kod yang lain.
  • Apabila fungsi tanpa nama digunakan untuk menetapkan nilai kepada pembolehubah, PHP menguruskan menukar ungkapan itu kepada contoh kelas dalaman Penutupan secara automatik.

Atas ialah kandungan terperinci Fungsi Tanpa Nama PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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
Artikel sebelumnya:Fungsi Tarikh dalam PHPArtikel seterusnya:Fungsi Tarikh dalam PHP