Belajar PHP dan MySQL dari NOL – Part VII (Fungsi)

Fungsi dalam PHP

Fungsi adalah menjadi “suatu blok statemen yang dapat dikelompokkan bersama sebagai sebuah entitas bernama.” Karena ini adalah tutorial tentang PHP, bukan kursus pengantar dalam bahasa Yunani, saya akan menerjemahkan bahwa untuk Anda: fungsi hanyalah satu set pernyataan program yang melakukan tugas tertentu, dan yang bisa “disebut”, atau dieksekusi, dari mana saja dalam program anda.

Setiap bahasa pemrograman datang dengan memiliki fungsi built-in, dan biasanya juga memungkinkan pengembang untuk menentukan fungsi mereka sendiri. Sebagai contoh, jika saya punya laporan laba untuk tahun di meja saya, dan saya ingin mengembang setiap angka sebesar 35%, saya bisa menelepon lingkungan akuntansi saya dan meminta mereka untuk melakukannya untuk saya … atau saya bisa menulis fungsi PHP sederhana yang disebut cheatTheShareholders () dan memilikinya melakukan pekerjaan untuk saya (itu lebih cepat, ditambah dengan PHP tidak tagihan per jam).

Ada tiga alasan penting mengapa fungsi adalah Good Thing™.

Pertama: fungsi-fungsi yang ditetapkan memungkinkan Anda untuk memisahkan kode Anda ke subbagian mudah diidentifikasi – yang lebih mudah untuk memahami dan debug.

Kedua: fungsi membuat program anda modular, memungkinkan Anda untuk menulis sepotong kode sekali dan kemudian kembali menggunakannya beberapa kali dalam program yang sama.

Dan ketiga: pembaruan menyederhanakan fungsi kode atau perubahan, karena perubahan hanya perlu dilaksanakan dalam satu tempat (definisi fungsi). Fungsi sehingga menghemat waktu, uang dan elektron … dan saya tahu elektron setidaknya akan terima kasih!

Praktek penggunaan fungsi

Untuk melihat bagaimana fungsi bekerja, lihat contoh berikut:

Inilah output yang akan terlihat:


(Tentu itu kasar, tapi itu tidak menunjukkan bagaimana fungsi memungkinkan Anda untuk menggunakan kembali potongan-potongan kode.)

Hal pertama yang saya lakukan dalam script di atas adalah mendefinisikan sebuah fungsi baru, dengan kata kunci fungsi. Kata kunci ini diikuti oleh nama fungsi, yang dalam hal ini adalah myStandardResponse (). Semua kode program yang melekat pada fungsi yang kemudian ditempatkan di dalam pasangan kurung kurawal – dan ini dapat berisi kode program loop, pernyataan bersyarat, panggilan ke fungsi-fungsi yang ditentukan lain, atau panggilan ke fungsi-fungsi PHP yang lain.

Tentu saja, mendefinisikan suatu fungsi hanya setengah dari teka-teki, untuk itu ada gunanya sama sekali, Anda perlu untuk “memohon” itu. Dalam PHP, seperti dalam satu juta bahasa lain, hal ini dilakukan dengan memanggil fungsi berdasarkan namanya, seperti yang telah saya lakukan dalam contoh di atas. Memanggil fungsi yang ditetapkan pengguna identik dengan memanggil built-in fungsi PHP seperti echo () atau meledak ().

Berikut format khas untuk fungsi:

Memiliki Argumen sebuah … atau Dua

Fungsi seperti yang Anda lihat di bagian sebelumnya cetak nilai yang sama setiap kali Anda memanggil mereka. Sementara ini menarik enam pertama kali, bisa membosankan pada hari ketujuh. Apa yang perlu kita lakukan, untuk membuat, membosankan fungsi bodoh sedikit lebih menarik, adalah mendapatkan mereka untuk kembali nilai yang berbeda setiap kali mereka dipanggil.

Masukkan argumen.

Argumen bekerja dengan menggunakan pengganti untuk mewakili suatu variabel tertentu dalam suatu fungsi. Nilai untuk variabel ini diberikan ke fungsi tersebut pada saat run-time dari program utama. Karena masukan ke fungsi tersebut akan berbeda pada setiap permintaan, sehingga akan output.

Untuk melihat bagaimana ini bekerja, lihat fungsi berikut, yang menerima sebuah argumen tunggal dan kemudian mencetak kembali setelah perhitungan:

Dalam contoh ini, ketika getCircumference () fungsi ini disebut dengan argumen, argumen yang diberikan ke variabel placeholder $ radius dalam fungsi tersebut, kemudian ditindaklanjuti oleh kode dalam definisi fungsi.

Ada juga kemungkinan untuk lulus lebih dari satu argumen untuk fungsi. Hal ini dilakukan dengan menggunakan daftar dipisahkan koma, seperti yang ditunjukkan contoh berikut:

Di sini, tergantung pada nilai argumen kedua, program aliran dalam fungsi bergerak ke cabang sesuai dan memanipulasi argumen pertama.

Perhatikan bahwa tidak ada persyaratan untuk menentukan tipe data dari argumen yang dilewatkan ke fungsi. Karena PHP adalah bahasa dinamis-mengetik, secara otomatis mengidentifikasi jenis variabel dan bertindak atas secara wajar.

Lingkaran di Pasir

Fungsi pada halaman sebelumnya hanya dicetak output mereka ke layar. Tetapi bagaimana jika Anda ingin fungsi untuk melakukan sesuatu yang lain dengan hasilnya? Nah, dalam PHP, Anda dapat memiliki fungsi mengembalikan nilai, seperti hasil perhitungan, untuk pernyataan yang memanggilnya. Hal ini dilakukan dengan menggunakan pernyataan return dalam fungsi, seperti ditunjukkan di bawah ini:

Di sini, argumen dikirimkan ke getCircumference () fungsi diproses, dan hasilnya dikembalikan ke program utama, di mana ia dapat ditangkap dalam variabel, dicetak, atau ditangani dengan cara lain.

Anda bahkan dapat menggunakan hasil dari fungsi di dalam fungsi lain, seperti digambarkan dalam revisi kecil dari contoh di atas:

Nilai Kembali tidak perlu angka atau string saja: fungsi hanya dapat dengan mudah mengembalikan array (ingat mereka?), seperti yang ditunjukkan dalam contoh berikut:

Dengan asumsi file tersebut tampak seperti ini,

test@test.com
a@x.com
zooman@deeply.bored.org
b@x.com
guess.me @ where.ami.net
testmore@test.com

output dari script di atas akan terlihat seperti ini:

test.com, x.com, deeply.bored.org, where.ami.net,

Perhatikan bahwa pernyataan return berakhir pelaksanaan program di dalam suatu fungsi.

Susunan letak argumen

Urutan argumen dilewatkan ke suatu fungsi dapat menjadi penting. Contoh berikut ini mengharuskan bahwa nama dilewatkan sebagai argumen pertama, dan tempat sebagai yang kedua.

Ini adalah output:

Dalam contoh ini, jika Anda membalik urutan argumen yang dilewatkan ke fungsi, ini adalah apa yang Anda akan melihat:

Dan lihat apa yang terjadi jika Anda lupa untuk melewati sebuah argumen yang dibutuhkan:

Untuk menghindari kesalahan seperti itu, PHP memungkinkan Anda untuk menentukan nilai default untuk semua argumen dalam fungsi yang ditetapkan pengguna. Nilai-nilai default digunakan jika pemanggilan fungsi yang hilang beberapa argumen. Berikut ini contohnya:

Dalam hal ini output akan:

Perhatikan bahwa fungsi telah disebut dengan hanya satu argumen, meskipun definisi fungsi membutuhkan dua. Namun, karena nilai-nilai default yang hadir untuk setiap argumen dalam fungsi tersebut, argumen yang hilang diganti dengan nilai default untuk argumen itu, dan tidak ada kesalahan yang dihasilkan.

Daftar Argumen Amazing Menyusut

Semua contoh di halaman sebelumnya memiliki satu kesamaan: jumlah argumen pada definisi fungsi adalah tetap. Namun, PHP 4.x juga mendukung daftar variabel-panjang argumen, dengan menggunakan func_num_args () dan func_get_args () perintah. Karena ingin nama yang lebih baik, fungsi-fungsi ini disebut “fungsi fungsi”. Coba membungkus lidah Anda di sekitar bahwa ketika Anda melihat contoh berikut ini, yang menunjukkan bagaimana mereka dapat digunakan:

Hmmm … jika Anda licik, Anda mungkin telah mencoba untuk melewati someFunc () array, dan menemukan bahwa alih-alih menampilkan elemen array, itu hanya berkata “Array”. Anda dapat memperbaikinya dengan menambahkan tes cepat untuk argumen array dalam fungsi, seperti dalam hal ini menulis ulang:

Going Global

Sekarang mari kita berbicara sedikit tentang variabel yang digunakan dalam fungsi, dan hubungan mereka dengan variabel di dunia luar. Biasanya, variabel yang digunakan dalam suatu fungsi yang “lokal” – yang berarti bahwa nilai-nilai yang ditugaskan kepada mereka, dan perubahan yang dilakukan kepada mereka, dibatasi untuk fungsi ruang saja.

Pertimbangkan contoh sederhana ini:

Ketika Anda menjalankan script ini, di sini adalah apa yang Anda akan melihat:

Dengan kata lain, variabel di dalam fungsi ini terisolasi dari variabel identik-nama dalam program utama. Variabel dalam fungsi demikian tepat disebut “lokal” variabel karena mereka hanya ada dalam fungsi di mana mereka didefinisikan.

Sebaliknya juga benar: variabel didefinisikan dalam suatu fungsi tidak bisa “melihat” luar. Untuk mengilustrasikan, lihatlah contoh berikut ini dan outputnya (atau kurangnya itu):

Berikut adalah output:

Tergantung pada error_reporting Anda telah mengatur di php.ini, Anda juga mungkin akan melihat pesan kesalahan:

Namun, saya tidak mengatakan ini tidak bisa diatasi. Untuk memiliki variabel dalam fungsi dapat diakses dari luar (dan sebaliknya), semua yang perlu Anda lakukan adalah pertama menyatakan mereka “global” dengan – coba tebak! – global kata kunci.

Berikut ini adalah menulis ulang dari contoh sebelumnya, kali ini mendeklarasikan variabel hari $global:

Dan ini adalah output nya:

Jadi, sekali variabel dideklarasikan global, tersedia di tingkat global, dan dapat dimanipulasi baik di dalam dan luar fungsi.

PHP juga dilengkapi dengan variabel superglobal disebut – variabel yang selalu tersedia, terlepas dari apakah Anda sedang berada dalam suatu fungsi atau luar. Kau sudah melihat beberapa variabel khusus dalam aksi: tersebut _SERVER $, $ _POST dan $ _GET variabel semua superglobals, itulah sebabnya anda dapat mengakses hal-hal seperti nama-mengeksekusi script saat ini atau bahkan di dalam bentuk nilai fungsi.

Superglobals adalah Good Thing ™, karena mereka selalu ada ketika Anda membutuhkan mereka, dan Anda tidak perlu melompat melalui drum atau apapun untuk menggunakan data yang tersimpan di dalamnya. Baca lebih lanjut tentang superglobals dan lingkup variabel di http://www.php.net/manual/en/language.variables.predefined.php dan http://www.php.net/manual/en/language.variables.scope. php.

Memeriksa Referensi

Setiap diskusi tentang variabel dalam dan keluar dari fungsi tidak akan lengkap tanpa menyebutkan perbedaan antara “lewat referensi” dan “lewat nilai”. Sejauh ini, semua contoh Anda pernah melihat telah terlibat lewat argumen untuk fungsi “dengan nilai” – yang berarti bahwa salinan variabel dilewatkan ke fungsi, sedangkan variabel asli tetap tidak tersentuh. Namun, PHP juga memungkinkan Anda untuk melewatkan “dengan referensi” – yang berarti bahwa alih-alih lulus nilai ke fungsi, Anda lulus referensi ke variabel asli, dan memiliki fungsi pada tindakan yang bukan salinan.

Membingungkan? Nah, ini mungkin lebih mudah untuk memahami dengan sebuah contoh. Mari kita mulai dengan ini:

Anda sudah melihat ini sebelumnya, dan Anda sudah tahu apa output yang akan dikatakan:

Hal ini karena ketika getDay tersebut () fungsi dipanggil, ia melewati nilai “Sabtu” untuk fungsi (“lewat nilai”). Variabel yang asli tetap tak tersentuh, hanya isinya dikirim ke fungsi. Fungsi kemudian bekerja pada konten, memodifikasi dan menampilkan itu.

Sekarang, melihat bagaimana “lewat referensi” bekerja:

Perhatikan ampersand (&) sebelum argumen dalam definisi fungsi. Ini memberitahu PHP untuk menggunakan referensi variabel bukan nilai variabel. Ketika seperti referensi dilewatkan ke fungsi, kode di dalam fungsi bekerja pada referensi, dan memodifikasi isi dari variabel asli (yang referensi menunjuk ke) bukan salinan. Jika kemudian kamu mencoba mengambil nilai dari variabel asli luar fungsi, ia mengembalikan nilai diubah:

Sekarang Anda mengerti mengapa saya mengatakan tidak diskusi tentang variabel akan lengkap tanpa menyebutkan dua cara variabel yang lewat. Ini, tentu saja, adalah apa kata kunci global tidak di dalam fungsi: gunakan referensi untuk memastikan bahwa perubahan variabel di dalam fungsi tersebut juga mencerminkan luar. Manual PHP menempatkan dengan sangat baik ketika ia mengatakan “… ketika Anda mendeklarasikan sebuah variabel sebagai var $ global Anda sebenarnya menciptakan referensi ke variabel global”. Untuk contoh lebih lanjut, baca semua tentang referensi di http://www.zend.com/manual/language.references.php.

Dan itu hanya tentang menyimpulkan tutorial ini. Kali ini Anda telah mengambil langkah besar menuju desain software yang lebih baik dengan belajar bagaimana bagian abstrak dari kode PHP Anda ke dalam fungsi dapat digunakan kembali. Anda sekarang tahu bagaimana menambah fleksibilitas untuk fungsi Anda dengan memungkinkan mereka untuk menerima argumen yang berbeda, dan bagaimana untuk memperoleh satu (atau lebih) mengembalikan nilai dari mereka. Akhirnya, Anda telah belajar sedikit tentang bagaimana memperlakukan variabel PHP dalam dan luar fungsi.

Sumber: http://devzone.zend.com/node/view/id/637
Diterjemahkan oleh: http://translate.google.com dan disadur oleh jinbatsu (jwd)

Share

You may also like...

5 Responses

  1. belajar says:

    Waduwww panjanggggg benerrrr gan!
    OK, tapi mantapp penjelasannya.. bisa belajar lebih nih kedepannya untuk pake fungsi.

    makasih ya.. lanjut terus gan..

  2. Andre says:

    wahh manfaat nih …. 🙂
    aq pelajari yaa..praktekin nih

  3. Jawaad says:

    @belajar, iya gan.. mesti sabar kalau mau belajar hehe.

    @Andre, halo ndre.. makasih ya atas dukungannya 🙂 kamu udah jago juga hehe 😀

  4. Wildan says:

    Wah manfaat bnget gan.. Thank’s penjelasannya.. 😀

  5. RonaldHD says:

    keren kang, paling gk nyangka ternyata ampersand (&) sebelum argumen bisa merubah isi variabel

Leave a Reply to Andre Cancel reply

Your email address will not be published. Required fields are marked *