Abstract Class dan Object Interfaces yang kita pelajari dalam 2 tutorial sebelum ini merupakan implementasi dari konsep pemrograman berbasis objek yang dinamakan Polimorfisme. Dalam tutorial OOP PHP kali ini, kita akan membahas pengertian polimorfisme dalam pemrograman objek PHP, disertai contoh penggunaannya.
Pengertian Polimorfisme
Dari segi bahasa, Polimorfisme (bahasa inggris: Polymorphism) berasal dari dua kata bahasa latin yakni poly dan morph. Poly berarti banyak, dan morph berarti bentuk. Polimorfisme berarti banyak bentuk (wikipedia).
Di dalam pemrograman objek, polimorfisme adalah konsep dimana terdapat banyak class yang memiliki signature method yang sama. Implementasi dari method-method tersebut diserahkan kepada tiap class, akan tetapi cara pemanggilan method harus sama. Agar kita dapat 'memaksakan' signature method yang sama pada banyak class, class tersebut harus diturunkan dari sebuah abstract class atau object interface.
Sebagai contoh, berikut adalah kode PHP yang mengimplementasikan konsep polimorfisme:
<?php // buat abstract class abstract class komputer{   // buat abstract method   abstract public function booting_os(); }  class laptop extends komputer{   public function booting_os(){     return "Proses Booting Sistem Operasi Laptop";   } }  class pc extends komputer{   public function booting_os(){     return "Proses Booting Sistem Operasi PC";   } }  class chromebook extends komputer{ public function booting_os(){     return "Proses Booting Sistem Operasi Chromebook";   } }   // buat objek dari class diatas $laptop_baru = new laptop(); $pc_baru = new pc(); $chromebook_baru = new chromebook();  // buat fungsi untuk memproses objek function booting_os_komputer($objek_komputer){   return $objek_komputer->booting_os(); }  // jalankan fungsi echo booting_os_komputer($laptop_baru); echo "<br />"; echo booting_os_komputer($pc_baru); echo "<br />"; echo booting_os_komputer($chromebook_baru); ?>
Contoh kode diatas cukup panjang, namun jika anda mengikuti tutorial OOP PHP sebelumnya (tentang abstract class), maka kode diatas akan bisa dipahami dengan baik.
Pada awal program, saya membuat abstract class komputer yang kemudian diturunkan kedalam 3 class lain, yakni: class laptop, class pc dan class chromebook. Abstract class komputer memiliki abstract method booting_os(), yang harus diimplementasikan ulang pada tiap class yang diturunkan dari class komputer. Setelah pendefenisian class, saya membuat 3 objek dari masing-masing class.
Perhatikan bahwa setelah pembuatan objek dari masing-masing class, saya membuat fungsi booting_os_komputer(). Fungsi ini berperan untuk memanggil method-method dari setiap class.
Konsep polimorfisme dari contoh diatas adalah, fungsi booting_os_komputer() akan selalu berhasil dijalankan, selama argumen yang diberikan berasal dari class yang diturunkan dari class abstract komputer.
Peran Abstract Class dan Interface dalam Polimorfisme
Baik abstract class maupun interface bisa digunakan untuk membuat banyak class dengan method yang sama. Bahkan keduanya sering digunakan secara bersama-sama.
Berikut adalah revisi kode program kita sebelumnya dengan menggunakan abstract class dan interface:
<?php // buat abstract class abstract class komputer{   // buat abstract method   abstract public function booting_os(); }  interface mouse{   public function double_klik(); }  class laptop extends komputer implements mouse{   public function booting_os(){     return "Proses Booting Sistem Operasi Laptop";   }   public function double_klik(){     return "Double Klik Mouse Laptop";   } }  class pc extends komputer implements mouse{   public function booting_os(){     return "Proses Booting Sistem Operasi PC";   }   public function double_klik(){     return "Double Klik Mouse PC";   } }  class chromebook extends komputer implements mouse{   public function booting_os(){     return "Proses Booting Sistem Operasi Chromebook";   }   public function double_klik(){     return "Double Klik Mouse Chromebook";   } }  // buat objek dari class diatas $laptop_baru = new laptop(); $pc_baru = new pc(); $chromebook_baru = new chromebook();  // buat fungsi untuk memproses objek function booting_os_komputer($objek_komputer){   return $objek_komputer->booting_os(); }  function double_klik_komputer($objek_komputer){   return $objek_komputer->double_klik(); }  // jalankan fungsi echo booting_os_komputer($laptop_baru); echo "<br />"; echo double_klik_komputer($laptop_baru); echo "<br />"; echo "<br />";  echo booting_os_komputer($pc_baru); echo "<br />"; echo double_klik_komputer($pc_baru); echo "<br />"; echo "<br />";  echo booting_os_komputer($chromebook_baru); echo "<br />"; echo double_klik_komputer($chromebook_baru); ?>
Pada kode program diatas, saya membuat 1 abstract class: komputer, dan 1 interface: mouse. Keduanya kemudian di turunkan kepada 3 class: class laptop, class pc, dan class chromebook.
Selama sebuah class diturunkan dari abstract class komputer, dan menggunakan interface mouse, fungsi booting_os_komputer() dan fungsi double_klik_komputer() akan selalu berhasil di jalankan, terlepas dari apapun nama objek dan implementasi method yang digunakan.
Konsep polimorfisme yang kita bahas dalam tutorial ini bertujuan untuk membuat struktur pola dari class dan turunannya. Lebih jauh lagi, polimorfisme menekankan alur kode program yang terorganisir untuk mengurangi adanya perulangan kode program.
gan makasi banyak ya website nya banyak membantu saya dalam belajar
dimohon contohnya diperbanyak dan contoh yg sering terjadi gan
atau buat studi kasus membuat webite toko online dr awal atau apa gitu gan
tp skali lg makasi banyak yo gan. semoga terus diupdate materinya, ajax , jquery dll.
semoga web nya semakin ramai jg gan.
Makasih gan… saya usahakan untuk bisa terus update tutorial yang ada di duniailkom ini.
Ditunggu saja.. :)
Makasih gan tutorialnya ngikutin dari part1-17 , semuanya mantab & penjelasanya gak rumit bagi pemula.
O ya apa msh ada part selanjutnya?
Untuk sementara belum ada gan, tapi saya berencara menambahkannya nanti ke dalam format ebook (masih dalam proses). Pembahasan yang belum dibahas mencakup fitur-fitur baru dalam PHP object seperti traits dan namespaces.
mantap gan tutorialnya. membantu sekali dalam mempelajari konsep OOP. ditunggu ya gan lanjutan tutorial mengenai traits dan namespaces.
Makasi banyak gan , tutorialnya, sangat membantu saya.. :)
Sama2 gan, saya juga senang tutorialnya bisa bermanfaat :)
makasih gan
Gan tutorial nya mantab, sya mau tanya gimana jika kita membangun Web dengan berbagai file php yang terpisah, yang kita panggil hanya dengan function aja, bukan menggunakan include atau require,tujuan nya untuk manggil part part Web itu hehe, Thanks
Bisa saja sih gan, tapi memang lebih familiar menggunakan include atau require. Apabila mengikuti kaedah penulisan function, maka kita harus mengembalikan nilai fungsi yang akan berbentuk string PHP, seperti berikut:
Salah satu contoh yang menggunakan metode seperti ini adalah WordPress, dimana kita memanggil part-part halaman dengan fungsi get_header(), wp_footer(), dll. Silahkan berkreasi gan :)
mantab segali tutorialnya. saya mengikuti dari part 1 sampa 17 ini :D
seandainya saja saya mengetau website ini lebih cepat :(..
semangat gan nulisnya!! blum bisa bantu apa2 ane, ane kasih doa aja biar agan makin sukses.
Terimakasih gan… Saya juga senang tutorialnya bisa bermanfaat :)
oh iya sementara ane klik iklan aja wkwk :x
Hehe… terimakasih gan…
"TERIMA KASIH BANYAK" atas tutorialnya , boz. Sangat membantu Sekali. Saya yang awalnya "HAMPA" dengan dunia "OOP" sekarang jadi "PAHAM". Sukses Terus !! Saya tunggu Tutorial "TERBARU" nya.
Terimakasih juga atas kunjungannya gan… Siip, nanti akan saya update lagi tutorial OOP PHP nya :)
thank ya admin
tutorial nya sangat amat membantu..
sukses selalu =D
Terimakasih… semoga bermanfaat :)
Makasih Banyak Atas Tutorilnya OOP PHP, Moga Ilmunya Terus Bermanfaat :D
ditunggu ilmu yang lain tentang OOP
Tutorial nya sangat bermanfaat ! Ditunggu Tutorial PHP Lanjutan nya :D
Gan kalau aksesnya lewat class kyk gini APA bisa?
class Client {
public function __construct($obj)
{
$pc = new Pc;
$laptop = new Laptop;
$chromebook = new Chromebook;
$this->booting_os_komputer($obj);
$this->double_klik_komputer($obj);
}
public function booting_os_komputer(Komputer $komputer)
{
echo $komputer->booting_os();
}
public function double_klik_komputer (mouse $obj)
{
echo $obj->double_klik();
}
}
$client = new Client;
yang jadi maslah adalah dari script agan di atas pada bagian
$pc = new Pc;
$laptop = new Laptop;
$chromebook = new Chromebook;
harus di buat class terlebih dahulu.
jika agan jalankan script yang agan buat bisa di lihat dari pesan error nya tidak ada class untuk 3 objek yang baru saja di buat.
Sangat2 jelas gan, walaupun saya mengimplementasinya ke java, tpi saya kira tidak masalah, krn penggunaannya sama. Hehe terima kasih gan ilmunya, lanjut trus… Kalau bisa share tntg oop dalam pembuatan game, hehe
Hehe… sarannya ditampung y gan.
Iya, secara umum konsep OOP sama untuk bahasa pemrograman satu dengan yang lain. Tapi dalam beberapa aspek sedikit beda dalam implementasinya. Sebagai contoh di Java mengenal adanya konsep Constructor Overload / Multiple Constructor, tapi di PHP ini tidak disediakan.
gan maaf sebelumnya, boleh minta referensinya gaa??
Oh, boleh :)
Untuk tutorial OOP PHP ini saya banyak mengambil referensi dari manual resmi PHP, alamatnya di http://php.net/manual/en/language.oop5.php.
Tapi untuk contoh kode program saya buat sendiri agar lebih sederhana..
mas, makasih ini tutor Part 19 atau selanjutnya gmn cara akses nya,, di sidebar sebelah tidak terbaca. makasih :)
Hingga saat ini tutorial OOP PHP memang baru sampai part 17 ini mas, Jika ada waktu akan saya update untuk tutorial OOP selanjutnya :)
thanks banget gan.. ngikutin tutorial ente dari part 1 sampe 17.. dahsyat.. terus berkarya gan.. ditunggu tulisan ente selanjutnya..sementara klik iklan dulu lah…hehehe
Siap gan… saya juga senang tutorialnya bisa dengan mudah dipahami.. ditunggu saja updatenya gan :)
mantep banget tutorialnya , mudah dipahami, saya tunggu tutorial selanjutnya ,,,,,,,
Makasih gan, yup ditunggu saja update tutorial OOP nya :)
pada code di atas ada fungsi untuk memproses objek, pertanyaan saya kenapa fungsi itu tidak ditulis dalam class tapi di luar? Alasannya apa ya? Sy kurang paham.
Alasannya agar saya bisa menjelaskan apa yang dimaksud dengan polimorfisme gan, hehe…
Ini hanya untuk menyederhanakan contoh kode program saja.
Walaupun di dalam konsep OOP sebuah fungsi sebaiknya berada di dalam class, tapi dalam prakteknya bisa juga diluar class. Terutama untuk fungsi sederhana seperti diatas. Jika fungsi tersebut saya tempatkan di dalam class, tentu fungsinya akan berbeda, dan cara aksesnya akan berbeda pula. Jika mau, boleh dibuat class 'akses_komputer' yang di dalamnya berisi kedua fungsi tersebut.
Terima Kasih artikelnya seputar Ploymorphismenya. Sangat bermanfaat bagi saya yang baru belajar Polymorphisme. OOP memang keren
Terimakaih juga untuk komentar n kunjungannya gan… :)
Keren bgt gan …Dr kemarin cari tutorial yang gampang di mengerti tp bahasa Indonesia, eh nemu website agan …top,, dua jempol !
Recommended buat newbie
Makasih gan.. senang bisa bermanfaat :)
adminnya emang nguasai berapa bahasa pemrograman sih? pascal ada juga tutorialnya, dan kerjaan admin sehari-hari di bidang apa ya klw boleh tau, :D
Hehe, sebenarnya saya lebih fokus ke web programming gan, tp karena teringat pascal, jadinya pengen buat tutorial pascal (terpaksa belajar lagi, karena banyak yang lupa).
Umumnya lulusan IT/Ilmu Komputer mau g mau harus menguasai berbagai bahasa pemrgoraman, karena tugas dari dosen biasanya harus dibuat dengan bahasa pemrograman 'maunya' sang dosen :)
Manfaat banget nih gan, tutorial nya lengkap banget. Saya ngikutin tutorialnya dari awal sampai akhir, sangat mendetail. Saya tunggu update berikutnya gan, terutama tutorial tentang PHP7. Semangat terusss! :)
Terimakasih gan.. semoga tutorialnya bisa bermanfaat :)
wah sekali belajar dr part 1-selesai langsung paham, (y)
terimkasih pak!!!
Tutor selanjutnya apa ya???
Untuk materi selanjutnya bisa coba lanjut ke framework gan. Tp tutorialnya memang belum tersedia di duniailkom, hehe…
Ini tutornya udah sampai seluk beluk php bang? Apa masih ada lagi? Terima kasih banyak bang membantu banget, kalo ada uang mau beli ebook nya :)
Hehe, belum gan. Ini masih kulit2 dari PHP. Masih banyak materi lanjutan lain yang belum saya bahas.
Karena cukup kompleks dan perlu pembahasan yang lebih detail, sebagian materi lanjutan ini hanya saya bahas di eBook PHP Uncover. Untuk materi OOP akan dibahas dalam eBook terpisah.
Thank You Very Much deh gan… Ijin sedot materinya.. Semoga bisa berlanjut..
Sukses selalu, ditunggu eBook PHP Lanjutannya..
Siap gan.. :)
gan mau tanya,kalau misal kan contoh spt ini:
class A {function 1(){…}}
class B extends A {function 2(){…}}
class C extends B {function 3(){..}}
class D extends C {function 4(){..}}
include "asd.php";
/* file asd.php */
$obj = new D();
$dm = $obj->2();
muncul nya Call to undefined method D::2()
kira2 salah dmn nya ya gan
Saya belum coba langsung gan, tapi bisa di cek lagi apakah method 2() itu memiliki hak akses. Kalau tidak ada, bisa coba tambahkan hak akses public.
Kemudian bisa coba ubah nama methodnya jangan diawali angka, soalnya di dalam penulisan variabel PHP g bisa diawali angka. Coba ganti dengan huruf misalnya a, b, c, d, dll (walaupun mungkin masalahnya bukan disini).
Smuanya uda public depan method nya, nama method yg di atas cmn perumpamaan kog gan…harus bisa kn ya gan kl parent menggunkan public method,bikin new objek dr class paling akhir,trs memanggil fungsi dr parent..
banyak membantu,,trima kasih :)
Sip gan materi dari part 1 – 17 udah di lahap , mudah dipahami, di tunggu tutor oop selanjutnya :D
Makasih gan, Semangat terus hehehe
Siap, terimakasih juga untuk dukungannya… :)
baris 57 =-? menurut ane mending diapus aja gan :v
Terimakasih koreksinya gan.. kayaknya ada kelebihan ketik disitu. Segera di perbaiki…
gan, saya mau request dong. dibuat pdf nya, biar bisa belajar offline. dirumah tidak ada internet soalnya .
Di tampung y gan, rencananya nanti akan ada eBook khusus "PHP Lanjutan" yang akan membahas OOP PHP dengan lebih detail.
mantap gan, saya lagi ambil skripsi tentang OOP framework di PHP, materi lanjutannya ada di e-book apa ya gan? sudah dibuat? Trims banyak
Untuk materi OOP PHP saat ini masih belum tersedia eBooknya sis, mudah2an bisa menyusul segera…
mantabs tutorialnya,, mau tanya gan … apakah extends dan implements bisa banyak?
misal class A extends B,C,D implements E,F,G,H ? thanks a lot
Kalo g salah saya tidak bisa gan, mesti satu2.
terimakasih saya baca dari part 1 – 17 ngerasa kukiah oop 1 semester :D , terima kasi banyak pak…..
bagus nih tutorial, bahasa nya mudah dimenegerti dan pengambilan contoh yang sederhana serta bahasa yang mudah dimengerti. semangat berkarya mas! saya tunggu ebook OOP PHP Full
Siap, terimakasih juga untuk dukungannya….
Komentar pertama artikel ini udh dari tahun 2014, skrng 2017 pasti udh pada jago. Saya baru baca akhir tahun 2017, rasanya…. :'(
Hehe, konsep OOP di PHP malah sudah ada belasan tahun. Belajarnya tergantung kebutuhan saja…
Penjelasan sangat simpel dan mudah dimengerti, berguna banget untuk dasar OOP, maju terus!
Siip, semoga bisa bermanfaat…
makasih bang tutorialnya, saya udah belajar di website lain tapi saya kurang mudeng dengan penjelasannya tapi ketika liat tutorial duniailkom Alhamdulillah sekarang ngerti. Penjelasan lengkap dan sangat jelas. Saran aja bang, contoh/latihannya diperbanyak atau bisa dibuat sub bab lagi. Sekali lagi makasih duniailkom semoga makin sukses dan ilmunya bermanfaat. :)
oh iya bang agak OOT, mau nanya. misalkan kita pingin ngebuat website mending ikutin tutorial dulu baru bikin apa tabrak aja kalo butuh baru liat tutorial? menurut duniailkom mending gimana?
Menurut saya sebaiknya ikut tutorial dulu agar dasarnya kuat. Cara ini memang sedikit lebih lama, tapi akan memudahkan untuk jangka panjang. Kalau pakai try n error, programnya memang akan selesai lebih cepat. Tapi jadi lebih pusing jika ada error atau pengen modif.
Tutorialnya mudah dipahami untuk pemula seperti saya yang baru belajar OOP PHP.
Terimakasih banyak DuniaIlkom.com
great explanation, thanks gan
Contoh CRUD sederhana menggunakap OOP dong min, biar bisa mempraktekan langsung konsep OOP nya dalam program sederhana CRUD. yg sederhana saja biar bisa dikembangin sendiri.
Request ditampung ya… membuat CRUD dengan OOP lumayan panjang, akan dipertimbangkan untuk membuat tutorialnya.
Bang, ini tutorial OOP dasarnya masih ada lanjutannya atau ini udah cukup buat modal belajar Framework PHP. Makasih Banyak :)
Untuk tutorial OOP PHP di web duniailkom saya cukupkan sampai disini. Materi lanjutan rencananya akan dibahas di eBook OOP PHP Duniailkom (saat ini masih belum tersedia).
Jika pengen lanjut ke framework mungkin sudah bisa, tapi masih ada beberapa konsep OOP yang belum dibahas seperti namespace.
Bang, ane msih bingung tentang variabel $objek_komputer. Kenapa menggunakan variabel tersebut? Apakah nama variabelnya bisa diganti atau namanya sudah ditetapkan seperti variabel $this yang sudah ditentukan oleh php? Trus cara kerjanya gimana bang?(soalnya tidak ada deskripsi dari variabel tersebut, tapi bisa dipanggil) .
Mohon penjelasannya bang
Variabel $objek_komputer itu hanya sekedar "container", dan bisa diganti dengan nama lain. Ini sama seperti penggunaan parameter di dalam sebuah function, seperti contoh berikut:
function hello($kota){
echo "Hello $kota";
}
$city = "Jakarta";
hello($city); // Hello Jakarta
Variabel $kota dalam contoh diatas sama fungsinya dengan $objek_komputer dalam tutorial ini.
Ooh berarti kalau utk kontainer ngga perlu dideskripsikan ya bang, sip bang, udah pahm, maksih penjelasannya bang.
Mas Andre, adakah artikel php lanjutan seperti interceptor, object cloning, callbacks & closures, namespaces autoloading, access modifier, setter getter ?
Saat ini masih belum ada nih, tapi kemungkinan besar materi lanjutan OOP PHP akan saya tulis dalam bentuk eBook biar lebih detail…
Coding polimorfisme ini didalamnya sudah termasuk kelas, objek dan pewarisan ya?
Yup, konsep polimorfisme memang butuh perpaduan dari materi2 OOP lainnya…
Mohon ma'af bang Andre. Mengapa anda tidak membuat tutorial CodeIgniter atau Laravel. Karena cara penyampaian tutorial anda sungguh rapi, jelas dan runtun. Wassalam
Sip, request ditampung.., secara bertahap materi2 lain akan dilengkapi.
Untuk tutorial Laravel mungkin akan menyusul 1 – 2 bulan lagi (setelah perilisan eBook Laravel duniailkom)
Utomo Zhafari
Sukses selalu bang Andre, terus berkreasi and keep in touch with perkembangan dan kebutuhan bahasa program. Wassalam
Aamiin… terimakasih juga untuk dukungannya
Utomo Zhafari:
Ma'af bang Andre, kalau boleh tahu, mengapa abang tidak menggunakan sarana youtube sebagai penunjang tutorial ini. Abang berwajah ganteng merupakan daya tarik. Dan yang lebih penting lagi abang menguasai materinya. Kemampuan bahasa Indonesia dan bahasa Inggris menunjang. Cara penyampaian tutorial runtun dan sistimatis. Karena yang saya ketahui tutorial youtube memiliki kelebihan tersendiri dan bukan hanya menjangkau wilayah nusantara saja, bahkan sampai ke mancanegara. Salam.
Hehe, dari dulu sempat kipikiran untuk buat video tutorial, tapi sampai sekarang belum kesampaian…
Kendala utama karena perlu meluangkan waktu lagi untuk belajar aplikasi editing video serta mempersiapkan perangkat yang dibutuhkan (software / hardware). Mudah2an suatu saat bisa kesampaian buat channel youtube duniailkom.
Saya yakin kalau anggaran tidak masalah buat abang, atau sangat tersedia membuat program youtube tersebut. Yang tersisa adalah merekrut tim untuk mengatasi kendala tersebut. Kalau sudah berjalan, komunikasi dengan members seputar permasalahan bahasa program dan hal-hal terkait bisa dilakukan menggunakan telegram. Semoga bisa segera dimulai, walaupun setiap memulai sesuatu memerlukan energi yang besar.
Gan minta sarannya dong.
Kalo abis belajar PHP bagusnya lanjut Javascript Uncover atau MySQL Uncover dulu.
Dengan catatan saya harus cepet dapat uang dari bikin program.
Saya mau jadi fullstack web programmer, tapi lebih ngutamain backend sih.
Kalo query-query dasar mariadb sih udah tau kaya yang dibahas di PHP Uncover, apa itu udah cukup buat bikin projek-projek kecil.
Minta sarannya mas.
Kalau rasanya materi MySQL sudah cukup, bisa lanjut ke JavaScript saja.
Tapi untuk catatan "harus cepet dapat uang dari bikin program", saya tidak bisa jamin apa2. Itu tergantung seberapa besar usaha agan untuk terus belajar dan meningkatkan skill.
Semua materi yang ada di buku HTML, CSS, PHP, MySQL dan JavaScript Uncover duniailkom juga masih dasar dari web programming. Kalau cuma mengandalkan ini saja, saya rasa masih belum cukup untuk bisa bersaing mencari kerja sebagai programmer profesional. Ini semua memang harus dikuasai, tapi tidak bisa hanya itu saja.
Silahkan search di google "lowongan kerja web programmer", lalu catat apa saja syarat skill yang dikuasai dan pelajari materi tersebut. Terlebih jika pengen fokus ke fullstack / backend, rata2 mensyaratkan harus paham framework seperti Code Igniter dan Laravel. Jika ditulis seperti ini, otomatis dianggap sudah paham HTML, CSS, PHP (sampai ke OOP), MySQL dan JavaScript.
Mantap bgt penjelasanya gan.RINGKAS,PADAT dan JELAS.berakhir juga sampai akhir.bagus buat pemahaman pemrograma berbasis object
Sip, sama2… moga ilmunya bisa bermanfaat.
kalau di java aku kenal yang namanya static polymorpism.. static polymorpism itu suatu kemampuan class untuk membuat nama method yang sama tapi dengan syarat harus beda parameternya.. atau ini bisa di sebut juga dengan overloading…
aku coba pahami di php kok susah banget ya…
Terima kasih om Andre udah bikin tutorial yang mudah dimengerti bagi pemula. Setelah ngikutin tutorial duniailkom mulari dari html, css, sql, php, javascript, akhirnya saya bakal nyoba bikin studi kasus berdasarkan dasar-dasar yang diajarkan di web ini. Sekali lagi, terima kasih, om Andre. Semoga ilmu-mu berkah dan menjadi pahala yang tak akan ada hentinya.
Aamiin…. siip, saya juga senang materi di web duniailkom ini bisa bermanfaat, silahkan lanjut explore web programming lebih dalam lagi…