Menyimpan Fungsi dalam Tatasusunan PHP
Timbul persoalan sama ada mungkin untuk menyimpan fungsi dalam tatasusunan PHP. Sebagai contoh, pertimbangkan perkara berikut:
$functions = [ 'function1' => function($echo) { echo $echo; } ];
Adakah ini pendekatan yang berdaya maju? Jika tidak, apakah alternatif yang disyorkan?
Pendekatan Disyorkan: Fungsi Tanpa Nama
Kaedah pilihan untuk menyimpan fungsi dalam tatasusunan melibatkan penggunaan fungsi tanpa nama. Seperti contoh di atas, ia boleh ditakrifkan sebaris:
$functions = [ 'function1' => fn($echo) => $echo ];
Merujuk Fungsi Luaran
Apabila berurusan dengan fungsi yang telah diisytiharkan, anda boleh merujuknya dengan nama sebagai rentetan:
<code class="php">function do_echo($echo) { echo $echo; } $functions = [ 'function1' => 'do_echo' ];</code>
Kaedah Warisan (PHP < 5.3): create_function
Untuk versi lama PHP yang tidak menyokong fungsi tanpa nama, binaan create_function boleh digunakan:
<code class="php">$functions = [ 'function1' => create_function('$echo', 'echo $echo;') ];<p><strong>Memanggil Fungsi Tersimpan</strong></p> <p>Tidak kira kaedah yang digunakan untuk menyimpan fungsi, ia boleh dipanggil terus (PHP >= 5.4) atau melalui call_user_func/call_user_func_array.</p> <pre class="brush:php;toolbar:false"><code class="php">$functions['function1']('Hello world!'); call_user_func($functions['function1'], 'Hello world!');</code>
Ringkasnya, fungsi tanpa nama ialah pendekatan yang disyorkan untuk menyimpan fungsi dalam tatasusunan PHP, dengan rujukan rentetan digunakan untuk fungsi yang telah diisytiharkan dan create_function tersedia untuk versi PHP lama.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menyimpan fungsi dalam tatasusunan PHP dengan berkesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!