PHP Master | Pengaturcaraan Fungsian dalam PHP
mata utama
- Pengaturcaraan berfungsi merawat pengiraan sebagai penilaian fungsi matematik, dan mengelakkan data negeri dan mutable, merawat fungsi sebagai warga kelas pertama. Ini bermakna fungsi boleh digunakan seperti nilai dalam pengaturcaraan penting.
- Konsep utama pengaturcaraan berfungsi termasuk invarians (sekali ditakrifkan, nilai pembolehubah tidak dapat diubah), rekursi (digunakan kerap disebabkan oleh invarians), fungsi tulen (fungsi tanpa kesan sampingan), dan fungsi pesanan yang lebih tinggi (fungsi yang boleh digunakan untuk menukar fungsi ke dalam fungsi pesanan yang lebih tinggi).
- Pengaturcaraan berfungsi membolehkan kod yang lebih mudah dan mudah dibaca untuk menggalakkan pengaturcaraan selamat dengan mengelakkan data keadaan dan berubah -ubah. Ia juga boleh membantu anda memberi tumpuan kepada apa yang anda ingin capai, bukannya peristiwa yang tidak disengajakan dalam proses pengurusan.
- Walaupun kelebihan pengaturcaraan berfungsi, lengkung pembelajarannya sangat curam bagi mereka yang telah dilatih secara imperatif. Beberapa manfaat yang berkaitan dengan pengaturcaraan berfungsi secara tradisinya tidak terpakai kepada PHP kerana ia tidak direka sebagai bahasa pengaturcaraan berfungsi. Ia juga mungkin bukan cara yang paling berkesan untuk menulis program.
Konsep penting pengaturcaraan berfungsi
Wikipedia mentakrifkan pengaturcaraan berfungsi sebagai "paradigma pengaturcaraan yang merawat pengiraan sebagai penilaian fungsi matematik dan mengelakkan data keadaan dan berubah". Dalam pengaturcaraan fungsional, fungsi dianggap sebagai warga kelas pertama, sementara dalam pengaturcaraan penting, kami memberi tumpuan terutamanya kepada data dan langkah-langkah untuk mengubah data untuk mencapai hasil yang diharapkan. Apabila kita mengatakan bahawa fungsi adalah warganegara kelas pertama, ini bermakna kita boleh menggunakan fungsi seperti kita menggunakan nilai dalam pengaturcaraan penting. Mereka boleh diluluskan sebagai parameter ke fungsi, yang ditakrifkan dalam fungsi lain, atau bahkan dikembalikan sebagai hasilnya. Dalam erti kata lain, "fungsi adalah nilai". Kami akan membincangkannya lagi kemudian, tetapi pengaturcaraan berfungsi mempunyai banyak konsep penting lain. Untuk menamakan hanya beberapa contoh:Invariance
Invariance merujuk kepada tingkah laku yang apabila nilai pembolehubah ditakrifkan, ia tidak dapat diubah. Bahasa yang berbeza mempunyai pelaksanaan yang berbeza;
rekursi
rekursi juga menonjol dalam pengaturcaraan berfungsi. Dalam pengaturcaraan yang penting, apabila kita perlu memanipulasi set atau tatasusunan, kita boleh menggunakan struktur gelung seperti untuk dan menembusi untuk meleleh melalui setiap elemen dan menggunakan pembolehubah sementara untuk menyimpan nilai semasa. Walau bagaimanapun, pendekatan ini tidak mungkin dalam pengaturcaraan berfungsi kerana invarians. Rekursi adalah jawapannya, kerana pembukuan ini dilakukan secara tersirat melalui timbunan panggilan. Katakan kita mahu menulis fungsi untuk mencari jumlah semua elemen dalam array (lupakan kewujudan array_sum () buat masa ini). Dalam gaya berfungsi, kami akan menulis:
<?php function sum($array) { if (empty($array)) return 0; else return $array[0] + sum(array_slice($array, 1)); } $total = sum(array(1, 2, 3)); // 6 ?>
Senarai kosong akan kembali 0, yang merupakan keadaan asas kami. Untuk array yang mengandungi pelbagai nilai, ia mengembalikan hasil penambahan elemen pertama kepada jumlah rekursif semua elemen lain.
fungsi tulen dan ketelusan rujukan
Jika fungsi tidak mengubah nilai objek luarannya sendiri (seperti pembolehubah global atau statik) dan tidak mempunyai kesan I/O (seperti menulis kepada fail, pangkalan data, dll.), Fungsi tersebut dikatakan tidak mempunyai kesan sampingan. Fungsi sedemikian juga dipanggil fungsi tulen. Untuk set parameter yang diberikan, output fungsi tulen akan sentiasa sama, yang menghasilkan harta lain yang dipanggil ketelusan rujukan. Apabila fungsi dirujuk telus, kita boleh menggantikan fungsi dengan nilainya tanpa menjejaskan tingkah laku program. Semua fungsi matematik adalah fungsi murni, manakala fungsi tarikh, rand (), dan lain-lain adalah fungsi bukan liure.
Fungsi Pesanan Lanjutan
Konsep di atas boleh dilaksanakan dalam hampir mana-mana bahasa pengaturcaraan, tetapi fungsi warga kelas pertama dan fungsi pesanan yang lebih tinggi adalah dua ciri yang paling menonjol dalam pengaturcaraan berfungsi. Saya telah menjelaskan bahawa fungsi warganegara kelas pertama bermakna fungsi boleh dianggap sebagai nilai. Fungsi pesanan yang lebih tinggi adalah fungsi yang boleh berfungsi sebagai parameter dan boleh mengembalikan fungsi sebagai hasilnya. Dua ciri penting baru-baru ini ditambah membolehkan kami menulis fungsi pesanan yang lebih tinggi dalam PHP: Ekspresi dan Penutupan Lambda.
fungsi lambda
Fungsi Lambda (juga dikenali sebagai fungsi tanpa nama) hanyalah fungsi tanpa nama. Apabila kita menentukan fungsi tanpa nama, rujukan kepada fungsi dikembalikan, yang disimpan dalam pembolehubah untuk kegunaan kemudian. Kami menggunakan pembolehubah ini untuk memanggil fungsi apabila diperlukan. Banyak bahasa yang berbeza mengamalkan konsep ini. Malah, anda mungkin menggunakan fungsi Lambda dalam pengaturcaraan JavaScript harian anda, menggunakannya sebagai panggilan balik untuk interaksi pengguna yang berbeza dan panggilan AJAX.
$("#myButton").click(function () { // do something });
Kod ini sangat mudah dan mudah difahami, yang boleh membuat kita melupakan aspek fungsinya. PHP memperkenalkan ciri kuat ini dalam versi 5.3, yang membolehkan kita menulis kod PHP dengan cara yang sama:
<?php $square = function ($arg) { return $arg * $arg; }; $value = $square(2); // 4 ?>
Apabila bercakap tentang fungsi, terutamanya fungsi tanpa nama, adalah penting untuk memahami bagaimana menangani skop berubah -ubah. Sebagai contoh, JavaScript membolehkan anda mengakses pembolehubah luaran di dalam lambdas, sementara PHP tidak. Lambda mempunyai skop sendiri di dalam, seperti fungsi PHP biasa.
penutup
Kadang -kadang, anda mungkin mahu merujuk kepada pembolehubah dalam skop induk di dalam fungsi. Penutupan adalah serupa dengan fungsi Lambda, tetapi sedikit berbeza, dan anda boleh mengakses pembolehubah dengan skop luaran. Kita boleh menggunakan "menjangkau" dan mengikat pembolehubah luaran menggunakan kata kunci penggunaan PHP, yang juga diperkenalkan dalam Php 5.3.
<?php function sum($array) { if (empty($array)) return 0; else return $array[0] + sum(array_slice($array, 1)); } $total = sum(array(1, 2, 3)); // 6 ?>
Dalam kes ini, kita tidak lulus kadar faedah setiap kali fungsi dipanggil. Sebaliknya, kami mentakrifkannya secara luaran dan menggunakan kata kunci penggunaan untuk menjadikannya tersedia di dalam fungsi.
fungsi separa dan kari
Cukup, beberapa fungsi adalah fungsi yang dibuat dari fungsi sedia ada, dan parameter mereka digunakan sebahagiannya. Anda hanya perlu lulus parameter yang tinggal apabila memanggil fungsi yang dibuat. Kita boleh menggunakan penutupan untuk mewujudkan fungsi separa dalam PHP. Ini adalah contoh untuk mencari kelantangan kotak berdasarkan panjang, lebar, dan ketinggiannya. Semua parameter adalah pilihan;
$("#myButton").click(function () { // do something });
Semua parameter adalah pilihan. Periksa terlebih dahulu sama ada pemanggil telah lulus semua parameter. Dalam kes ini, kita boleh kembali ke kelantangan dengan mengalikan panjang, lebar, dan ketinggian. Jika bilangan parameter kurang daripada parameter, fungsi baru dikembalikan untuk mencari jumlah preset parameter yang diberikan. Sekarang katakan kita sedang mencari jumlah kotak dengan panjang tetap (mis. 10). Ini boleh dilakukan dengan mudah dengan mengambil 10 sebagai parameter pertama, atau kita boleh membuat fungsi separa dengan mengambil 10 sebagai parameter pertama dan kemudian meminta hanya nilai yang tinggal.
<?php $square = function ($arg) { return $arg * $arg; }; $value = $square(2); // 4 ?>
Currying adalah kes khas fungsi separa, di mana anda menukar fungsi yang menerima pelbagai parameter ke dalam pelbagai fungsi yang masing -masing menerima parameter tunggal. Sebagai contoh, sama dengan f (x, y, z) to f (x) (y) (z) (walaupun sintaks PHP tidak membenarkan panggilan bersarang panggilan seperti ini). Jika anda berminat untuk mempelajari lebih lanjut, Timothy Boronczyk telah menulis artikel yang sangat baik tentang kari dengan contoh sebenar.
Pro and Kekurangan
<?php function sum($array) { if (empty($array)) return 0; else return $array[0] + sum(array_slice($array, 1)); } $total = sum(array(1, 2, 3)); // 6 ?>
Slim memanggil fungsi panggil balik apabila URL yang diminta sepadan dengan laluan ini. Vance Lucas telah menulis beberapa artikel mengenai kes -kes penggunaan lain yang menarik dari fungsi Lambda sebelum ini. Galakkan pengaturcaraan yang selamat dengan mengelakkan data keadaan dan berubah -ubah. Dalam pengaturcaraan berfungsi, anda harus menulis fungsi yang hanya melakukan satu perkara dan tidak melakukan kesan sampingan masing -masing. Penekanan paradigma ini terhadap kesederhanaan modulariti dan fungsi dapat memudahkan untuk menyimpulkan program anda berdasarkan subrutin kecil yang berbeza. Pengaturcaraan fungsional juga boleh membantu anda menulis kod yang memberi tumpuan kepada apa yang anda ingin capai, dan bukannya secara eksplisit menguruskan peristiwa tidak sengaja dalam proses (bandingkan rekursi untuk menguruskan pembolehubah kaunter gelung). Tetapi ingat bahawa beberapa kelebihan yang secara tradisinya berkaitan dengan pengaturcaraan berfungsi tidak terpakai kepada PHP kerana ia tidak direka sebagai bahasa pengaturcaraan berfungsi. Sebagai contoh, fungsi tanpa kesan sampingan adalah sesuai untuk pemprosesan selari, tetapi skrip PHP tidak berjalan dengan cara ini. Ia juga tidak mudah untuk mengira kos fungsi rekursif dan malas, dan mungkin terdapat masalah prestasi yang serius disebabkan oleh overhead dalaman. Kadang -kadang, lebih masuk akal untuk menulis program dengan kebolehubahan untuk meningkatkan kecekapan. Mungkin kelemahan terbesar pengaturcaraan berfungsi adalah bahawa ia mempunyai lengkung pembelajaran yang sangat curam bagi mereka yang telah dilatih secara imperatif. Tetapi secara keseluruhan, pengaturcaraan berfungsi adalah menyeronokkan, dan belajar ia akan memberi anda alat baru untuk memikirkan masalah lama dan membantu anda berkembang sebagai pengaturcara. Ia bukan penyelesaian sejagat, tetapi boleh digunakan untuk kod PHP yang lebih bersih dan lebih elegan seperti yang diperlukan.
Ringkasan
Pengaturcaraan berfungsi bukan sekadar paradigma pengaturcaraan; Jika anda boleh melakukan pemikiran berfungsi, anda boleh memprogram secara fungsional dalam hampir mana -mana bahasa. Dalam artikel ini, kita membincangkan asas -asas pengaturcaraan berfungsi, menggunakan keupayaan PHP untuk menulis dan memberikan contoh -contohnya. Walaupun contoh -contoh yang diberikan dalam artikel ini mungkin tidak praktikal untuk anda, anda akan mendapati banyak situasi di mana gaya berfungsi dapat meningkatkan kualiti kod yang anda tulis dengan ketara. Cuba cari kes seperti ini, berfikir secara fungsional, dan bersenang -senang! gambar dari Fotolia
soalan yang sering ditanya mengenai pengaturcaraan fungsional php
Apakah perbezaan utama antara pengaturcaraan fungsional dan pengaturcaraan berorientasikan objek dalam PHP?
Pengaturcaraan fungsional dan pengaturcaraan berorientasikan objek adalah dua paradigma yang berbeza yang digunakan dalam PHP. Perbezaan utama ialah bagaimana mereka menguruskan keadaan dan data. Dalam pengaturcaraan berfungsi, fungsi adalah warga kelas pertama dan tidak mempunyai konsep negara. Ini bermakna bahawa diberikan input yang sama, fungsi akan sentiasa menghasilkan output yang sama. Pengaturcaraan berorientasikan objek, sebaliknya, berputar di sekitar objek dan interaksi mereka yang mengekalkan keadaan dan berubah dari masa ke masa. Ini boleh menghasilkan output yang berbeza, walaupun input adalah sama.
Bagaimana saya memulakan dengan PHP untuk pengaturcaraan berfungsi?
Untuk memulakan pengaturcaraan berfungsi dengan PHP, anda perlu memahami konsep asas seperti fungsi tulen, invarians, dan fungsi pesanan yang lebih tinggi. Kemudian anda boleh mula menulis fungsi yang tidak mengubah keadaan dan tidak mempunyai kesan sampingan. PHP mempunyai fungsi terbina dalam yang menyokong pengaturcaraan berfungsi, seperti array_map
, array_filter
, dan array_reduce
. Anda juga boleh menggunakan perpustakaan seperti koleksi Laravel yang menyediakan pembalut yang lancar dan mudah untuk menggunakan array data.
Apakah manfaat pengaturcaraan berfungsi dalam PHP?
Pengaturcaraan fungsional dalam PHP membolehkan anda menulis lebih bersih dan mudah dibaca kod. Ia boleh membantu anda mengelakkan masalah pengaturcaraan biasa seperti kesan sampingan dan perubahan keadaan, yang boleh menjadikan kod anda lebih mudah untuk diramalkan dan diuji. Pengaturcaraan fungsional juga membolehkan lebih banyak kod modular kerana fungsi dapat digabungkan dan digunakan semula dengan mudah.
Apakah batasan atau cabaran pengaturcaraan berfungsi menggunakan PHP?
Walaupun pengaturcaraan berfungsi mempunyai kelebihannya, ia juga mempunyai beberapa cabaran. PHP tidak pada asalnya direka untuk pengaturcaraan berfungsi, jadi beberapa fungsi mungkin tidak begitu kuat atau cekap sebagai bahasa yang direka untuk pengaturcaraan berfungsi. Di samping itu, pengaturcaraan berfungsi memerlukan cara berfikir yang berbeza, dan lengkung pembelajaran boleh menjadi curam bagi pemaju yang terbiasa dengan pengaturcaraan yang penting atau berorientasikan objek.
Bolehkah saya menggunakan campuran pengaturcaraan berfungsi dan berorientasikan objek dalam php?
Ya, PHP adalah bahasa berbilang perenggan, yang bermaksud anda boleh mencampurkan gaya pengaturcaraan yang berbeza. Anda boleh menggunakan pengaturcaraan berorientasikan objek untuk bahagian aplikasi yang mendapat manfaat daripada keadaan dan tingkah laku, dan pengaturcaraan berfungsi untuk bahagian-bahagian aplikasi yang mendapat manfaat daripada fungsi tanpa kesan, tanpa kesan sampingan. Ini memberi anda fleksibiliti untuk memilih kaedah terbaik untuk setiap bahagian aplikasi.
Bagaimanakah pengaturcaraan berfungsi mempengaruhi prestasi dalam PHP?
Kesan pengaturcaraan berfungsi pada prestasi PHP mungkin berbeza -beza. Dalam sesetengah kes, pengaturcaraan berfungsi boleh menulis kod yang lebih cekap kerana ia mengelakkan perubahan keadaan dan kesan sampingan. Walau bagaimanapun, dalam kes lain, ia mungkin tidak cekap kerana ia biasanya melibatkan membuat objek baru dan bukannya mengubah objek yang sedia ada. Adalah penting untuk menganalisis dan menguji kod anda untuk memastikan ia memenuhi keperluan prestasi anda.
Apakah beberapa sumber yang baik untuk mempelajari pengaturcaraan berfungsi PHP?
Terdapat banyak sumber yang tersedia untuk mempelajari pengaturcaraan berfungsi PHP. Beberapa titik permulaan yang baik termasuk manual PHP (yang mempunyai bahagian mengenai pengaturcaraan berfungsi) serta tutorial dan artikel dalam talian. Terdapat juga buku mengenai topik ini, seperti pengaturcaraan fungsional PHP oleh Gilles Crettenand.
Bolehkah saya menggunakan pengaturcaraan berfungsi untuk pembangunan web dalam php?
Ya, anda boleh menggunakan pengaturcaraan berfungsi untuk pembangunan web dalam PHP. Pengaturcaraan fungsional boleh membantu anda menulis kod yang lebih bersih dan lebih modular, yang boleh memberi manfaat dalam persekitaran pembangunan web. Walau bagaimanapun, ingat bahawa PHP adalah bahasa pelbagai perenggan, jadi anda boleh menggunakan gaya pengaturcaraan lain, seperti pengaturcaraan berorientasikan objek juga.
Bagaimana menangani pengendalian ralat dalam pengaturcaraan berfungsi dalam PHP?
Dalam pengaturcaraan berfungsi, pengendalian ralat biasanya dilakukan dengan menggunakan monad, struktur data yang dapat mewakili pengiraan dan bukan nilai. Dalam PHP, anda boleh menggunakan Monad untuk pengendalian ralat. Ini membolehkan anda menghubungkan operasi bersama -sama dan jika mana -mana operasi gagal, seluruh rantaian akan dilangkau.
Adakah pengaturcaraan berfungsi dalam PHP sesuai untuk aplikasi besar?
Pengaturcaraan berfungsi boleh digunakan untuk aplikasi besar, tetapi ia bergantung kepada keperluan khusus aplikasi. Pengaturcaraan fungsional boleh menulis lebih bersih, kod modular, yang boleh memberi manfaat dalam persekitaran berskala besar. Walau bagaimanapun, ia juga tidak cekap dalam beberapa kes, jadi penting untuk mempertimbangkan perdagangan.
Atas ialah kandungan terperinci PHP Master | Pengaturcaraan Fungsian dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

Dalam php, kata laluan_hash dan kata laluan 1) password_hash menjana hash yang mengandungi nilai garam untuk meningkatkan keselamatan. 2) Kata Laluan_verify Sahkan kata laluan dan pastikan keselamatan dengan membandingkan nilai hash. 3) MD5 dan SHA1 terdedah dan kekurangan nilai garam, dan tidak sesuai untuk keselamatan kata laluan moden.

PHP digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan pembangunan API. 1) e-dagang: Digunakan untuk fungsi keranjang belanja dan pemprosesan pembayaran. 2) Sistem Pengurusan Kandungan: Digunakan untuk penjanaan kandungan dinamik dan pengurusan pengguna. 3) Pembangunan API: Digunakan untuk Pembangunan API RESTful dan Keselamatan API. Melalui pengoptimuman prestasi dan amalan terbaik, kecekapan dan pemeliharaan aplikasi PHP bertambah baik.

Kaedah permintaan HTTP termasuk GET, POST, PUT dan DELETE, yang digunakan untuk mendapatkan, menghantar, mengemas kini dan memadam sumber masing -masing. 1. Kaedah GET digunakan untuk mendapatkan sumber dan sesuai untuk operasi membaca. 2. Kaedah Pos digunakan untuk menyerahkan data dan sering digunakan untuk membuat sumber baru. 3. Kaedah Put digunakan untuk mengemas kini sumber dan sesuai untuk kemas kini lengkap. 4. Kaedah Padam digunakan untuk memadam sumber dan sesuai untuk operasi penghapusan.

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

Dalam phpoop, diri :: merujuk kepada kelas semasa, ibu bapa :: merujuk kepada kelas induk, statik :: digunakan untuk mengikat statik lewat. 1.Self :: digunakan untuk kaedah statik dan panggilan berterusan, tetapi tidak menyokong pengikatan statik lewat. 2.Parent :: digunakan untuk subkelas untuk memanggil kaedah kelas induk, dan kaedah peribadi tidak dapat diakses. 3.Static :: Menyokong pengikatan statik lewat, sesuai untuk warisan dan polimorfisme, tetapi boleh menjejaskan kebolehbacaan kod.

PHP mengendalikan fail muat naik melalui pembolehubah fail $ \ _. Kaedah untuk memastikan keselamatan termasuk: 1. Semak kesilapan muat naik, 2. Sahkan jenis dan saiz fail, 3. Mencegah penindasan fail, 4. Pindahkan fail ke lokasi storan tetap.

Jenis PHP meminta untuk meningkatkan kualiti kod dan kebolehbacaan. 1) Petua Jenis Skalar: Oleh kerana Php7.0, jenis data asas dibenarkan untuk ditentukan dalam parameter fungsi, seperti INT, Float, dan lain -lain. 2) Return Type Prompt: Pastikan konsistensi jenis nilai pulangan fungsi. 3) Jenis Kesatuan Prompt: Oleh kerana Php8.0, pelbagai jenis dibenarkan untuk ditentukan dalam parameter fungsi atau nilai pulangan. 4) Prompt jenis yang boleh dibatalkan: membolehkan untuk memasukkan nilai null dan mengendalikan fungsi yang boleh mengembalikan nilai null.
