Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk melakukan pengaturcaraan berfungsi dengan PHP

Bagaimana untuk melakukan pengaturcaraan berfungsi dengan PHP

WBOY
WBOYasal
2023-06-06 08:21:031566semak imbas

PHP ialah bahasa sebelah pelayan yang digunakan secara meluas Salah satu sebab mengapa ramai pembangun web suka menggunakan PHP ialah perpustakaan fungsinya yang kaya dan sintaks fungsi yang ringkas dan mudah digunakan. Pengaturcaraan fungsional ialah paradigma pengaturcaraan yang merangkum data dan tingkah laku dengan baik, menjadikan kod lebih modular dan lebih mudah untuk diselenggara dan diuji. Dalam artikel ini, kami akan memperkenalkan cara menggunakan PHP untuk pengaturcaraan berfungsi.

  1. Asas Pengaturcaraan Fungsian

Idea teras pengaturcaraan berfungsi adalah untuk menganggap fungsi sebagai warga kelas pertama, dan fungsi itu sendiri boleh diluluskan, dikembalikan, dan terdiri seperti pembolehubah. Dalam pengaturcaraan berfungsi, kami tidak mengubah suai keadaan boleh ubah, tetapi mengubah dan menapisnya melalui fungsi.

PHP sendiri menyokong pengaturcaraan berfungsi, dan terdapat banyak fungsi terbina dalam yang boleh digunakan untuk pemprosesan berfungsi. Contohnya array_map, array_filter, dsb. Di bawah kami menunjukkan cara menggunakan fungsi ini untuk melaksanakan operasi pengaturcaraan fungsi biasa.

  1. Fungsi tertib lebih tinggi

Fungsi tertib tinggi ialah fungsi yang boleh menerima fungsi sebagai parameter atau mengembalikan fungsi. Fungsi sedemikian boleh digunakan untuk mengarang dan menggunakan semula kod. Dalam PHP, fungsi tertib tinggi yang biasa digunakan termasuk array_map, array_filter, array_reduce, dll.

Fungsi array_map boleh menerima fungsi dan tatasusunan sebagai parameter, dan mengembalikan tatasusunan baharu Elemen tatasusunan baharu ialah nilai yang diperolehi selepas unsur dalam tatasusunan asal ditukarkan oleh fungsi.

Contohnya, kami mempunyai tatasusunan $x=[1,2,3,4]$ dan ingin menduakan setiap elemen dalam tatasusunan Anda boleh menggunakan kod berikut:

function square($x) {
    return $x * $x;
}

$array = [1, 2, 3, 4];
$new_array = array_map('square', $array);
var_dump($new_array); // 输出 [1, 4, 9, 16]
fungsi array_filter boleh menerima fungsi dan tatasusunan sebagai parameter dan mengembalikan tatasusunan baharu Elemen dalam tatasusunan baharu ialah elemen dalam tatasusunan asal yang memenuhi syarat.

Sebagai contoh, kami mempunyai tatasusunan $x=[1,2,3,4]$ dan ingin mendapatkan semua nombor genap dalam tatasusunan Anda boleh menggunakan kod berikut:

function is_even($x) {
    return $x % 2 == 0;
}

$array = [1, 2, 3, 4];
$new_array = array_filter($array, 'is_even');
var_dump($new_array); // 输出 [2, 4]

Fungsi array_reduce boleh menerima Mengambil fungsi, tatasusunan dan nilai awal sebagai argumen dan mengembalikan hasil terkumpul. Fungsi pengurangan menghantar setiap elemen dalam tatasusunan kepada fungsi untuk pengiraan, dan kemudian mendapat hasil terkumpul.

Sebagai contoh, kami mempunyai tatasusunan $x=[1,2,3,4]$ dan ingin mengumpul semua elemen dalam tatasusunan Anda boleh menggunakan kod berikut:

function add($a, $b) {
    return $a + $b;
}

$array = [1, 2, 3, 4];
$result = array_reduce($array, 'add');
var_dump($result); // 输出 10

    Fungsi tanpa nama
Fungsi tanpa nama ialah fungsi tanpa nama yang boleh digunakan untuk mentakrifkan fungsi yang digunakan sekali sahaja atau jarang. Dalam pengaturcaraan berfungsi, fungsi tanpa nama boleh digunakan untuk definisi dan komposisi fungsi yang pantas dan ringan.

Dalam PHP, anda boleh menggunakan fungsi kata kunci untuk mentakrifkan fungsi tanpa nama, atau anda boleh menggunakan fungsi anak panah untuk definisi pantas.

Sebagai contoh, kita boleh menggunakan fungsi tanpa nama untuk mentakrifkan fungsi segi empat dengan cepat:

$square = function($x) {
    return $x * $x;
};

$result = $square(3);
var_dump($result); // 输出 9

Sintaks fungsi anak panah boleh memudahkan lagi kod di atas:

$square = fn($x) => $x * $x;
$result = $square(3);
var_dump($result); // 输出 9

    Cory Currying
Currying ialah teknik yang menukar fungsi dengan berbilang parameter kepada fungsi dengan satu parameter. Dalam pengaturcaraan berfungsi, kari boleh digunakan untuk menggunakan semula dan memudahkan fungsi.

Dalam PHP, anda boleh menggunakan penutupan dan fungsi tertib lebih tinggi untuk melaksanakan kari. Sebagai contoh, kami mempunyai fungsi add(x,y,z) dan berharap untuk melaksanakan versi kari:

function add($x, $y, $z) {
    return $x + $y + $z;
}

$curried_add = function($x) use ($add) {
    return function($y) use ($x, $add) {
        return function($z) use ($x, $y, $add) {
            return $add($x, $y, $z);
        };
    };
};

$result = $curried_add(1)(2)(3);
var_dump($result); // 输出 6

    Fungsi gubahan
Fungsi gubahan merujuk kepada gabungan berbilang Fungsi digabungkan untuk membentuk fungsi baharu, yang boleh digunakan untuk memudahkan kod dan meningkatkan kebolehbacaan dan kebolehselenggaraan kod.

Dalam PHP, anda boleh menggunakan penutupan dan fungsi tertib lebih tinggi untuk mencapai komposisi fungsi. Sebagai contoh, kita mempunyai dua fungsi $f(x)$ dan $g(x)$, dan ingin melaksanakan fungsi gabungan $h(x)$ supaya $h(x) = f(g(x))$ :

function f($x) {
    return $x + 1;
}

function g($x) {
    return $x * 2;
}

$compose = function($f, $g) {
    return function($x) use ($f, $g) {
        return $f($g($x));
    };
};

$h = $compose('f', 'g');
$result = $h(2);
var_dump($result); // 输出 5

    Ringkasan
Artikel ini memperkenalkan cara menggunakan PHP untuk pengaturcaraan berfungsi, termasuk teknik biasa seperti fungsi tertib tinggi, fungsi tanpa nama, kari dan gubahan fungsi. Pengaturcaraan fungsional boleh menjadikan kod lebih modular, lebih mudah untuk diuji dan diselenggara Bagi pembangun web, memahami pengaturcaraan berfungsi adalah sangat berharga.

Atas ialah kandungan terperinci Bagaimana untuk melakukan pengaturcaraan berfungsi dengan 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