blog tentang php yg gak bikin boring..
13 Sep
Dalam artikel ini saya akan berusaha menerangkan tentang MVC. Model view controller, sebuah strategi dalam melakukan pengembangan aplikasi web.
Untuk mempermudah pemahaman, saya akan mencoba memberikan gambaran menggunakan MVC pada aplikasi shopping cart yang saya buat menggunakan framework codeigniter
Semoga para pembaca berkenan dan dapat mengambil manfaat dari artikel ini.
Sebenernya MVC adalah salah satu cara untuk memisahkan pengendali logika dengan pengendali tampilan (separate logic from view). Cara yang lain misalnya MVP - model, visual, presentation.
Bila kita melihat MVC dalam cara pandang ‘separate logic from view’, logicnya ada di model & controller, sedangkan view menjadi view.
Kenapa sih harus dipisah ? Tentu saja untuk mempercepat & mempermudah proses pengembangan perangkat lunak. Apakah benar seperti itu ? Saya sudah mengalami sendiri. Memang seperti itu.
Definisi MVC ada banyak. Kita bisa memilih antara definisi praktis atau filosofis. Walaupun saya adalah seorang software engineer yang serius, saya lebih suka mengambil definisi praktisnya.
Berikut ini adalah definisi praktis dari MVC, yang (mungkin) hanya berlaku untuk aplikasi berbasis web.
MVC adalah pembagian arsitektur aplikasi menjadi tiga kelompok:
Ilustrasi cara kerja aplikasi MVC adalah seperti ini :
Masih bingung ? Santai saja.. MVC tidaklah serumit beralih dari Joomla ke Drupal. Biar gampang saya beri contoh screenshot dari kode codeiginiter di aplikasi shopping cart saya.
Berikut ini controller bernama halaman dengan fungsi aturkatalog. Disini kita lihat bahwa controller memanggil fungsi di produk model bernama load_kat_all. Lihat warna merah pada gambar. Dan datanya akan dikirim ke 4 buah view (lihat warna hijau).

MVC code example - controller
Bagi saya, MVC adalah pembagian arsitektur aplikasi secara vertikal. Selanjutnya bagaimana dengan pembagian horizontalnya? Bagaimana kita membagi nama – nama controller, nama model dan nama view nya ?
Saya menghabiskan waktu 2 hari untuk merenungkan hal ini. Ternyata pada awalnya tema ini memang sulit, sampai-sampai tema ini cukup menganggu konsentrasi ritual ibadah saya.
Saya pribadi membaginya berdasarkan cara pandang obyek. Pertama-tama, akan saya buat controller berdasarkan obyek-obyek yang ada di shopping cart saya :
Urutan alami pembuatan filenya adalah : Kita buat file controller, file view, kemudian terakhir adalah file model
Berikut ini adalah contoh struktur direktori file saya yang dibuat dengan framework codeigniter
Mari kita lihat gambarnya dengan seksama.
Sebagai contoh, VIEW halaman mempunyai 2 VIEW : halaman_view.php berisi tampilan utama dan edithal_view yang berisi tampilan saat saya mengedit halaman.
Demikianlah sekilas info mengenai PHP MVC, semoga bisa memberi pencerahan dan cukup mempermudah learning curve para pembaca. Berikut ini adalah link-link yang saya rekomendasikan untuk dibaca bila ingin belajar MVC lebih lanjut.
Penjelasan MVC versi gampang
http://www.ash-mvc.org/website/framework/framework.html
Presentasi MVC
http://www.slideshare.net/neraath/php-mvc
Klo lagi nganggur dan mau bikin MVC sendiri
http://www.sitepoint.com/blogs/2005/12/22/mvc-and-web-apps-oil-and-water/
Meilihat MVC dari sudut pandang filsafat
http://www.phpwact.org/pattern/model_view_controller
MVC menurut martin fowler, salah seorang sesepuh software development
4 Sep
Kantor lamaku mempunyai masalah besar ketika mereka harus mencari PHP developer. Saya yakin masalah ini tidak hanya dijumpai oleh kantor lamaku saja.
Saya pikir kenyataan ini sangat ironis sekali. Negara ini memiliki begitu banyak pengangguran. Tapi banyak perusahaan masih kesulitan untuk mencari tenaga kerja yang berkualitas. Gampang dilihat, ini terjadi karena rendahnya kualitas programmer di Indonesia.
Secara umum kita bisa melihat bahwa kualitas tenaga kerja dapat dilihat dari dari dua aspek: Non - Teknis & teknis. Ada alasan kenapa aspek non teknis diletakkan didepan aspek teknis.
Kadang-kadang aspek non teknis yang tepat memiliki nilai yang sangat penting. Contoh: kemampuan untuk belajar mandiri. Kemampuan ini sangat berharga sekali dan sayangnya tidak semua orang memiliki kemampuan ini.
Aspek non teknis penting lain antara lain : kemampuan untuk bekerja dibawah tekanan deadline, kemampuan untuk menganalisis dan memecahkan masalah (problem solving skills) , sikap (attitude) di kantor, dll.
Berikut ini akan saya tuliskan beberapa kemampuan yang dianggap penting agar PHP developer dapat berkarya dengan maksimal di perusahaan pengembang perangkat lunak. Diharapkan juga, dengan menguasai delapan kemampuan dibawah ini, bisa mempermudah pencari kerja diterima di suatu perusahaan dan memiliki daya tawar yang cukup (kalau tidak bisa disebut tinggi).
Internet sudah mengubah cara hidup & cara bekerja orang. PHP developer diharuskan mampu untuk bekerja jarak jauh menggunakan email dan messenger. Sekilas terlihat mudah, tapi tidak semudah itu. Sebagai contoh, para newbie kebanyakan melakukan kesalahan-kesalahan seperti ini :
Internet sudah menjadi media yang menarik. Banyak pengetahuan tersebar di internet, dan kebanyakan gratis. Bila PHP developer menemui masalah, yang dibutuhkan adalah google, kemampuan bahasa Inggris dan sedikit kemampuan analisis.
Snippet (potongan2 code PHP) bertebaran di internet. Kita hanya butuh sedikit modifikasi agar dapat diimplementasikan.
Begitu juga dengan tutorial-tutorial gratis untuk menambah skillset. Kita tinggal menyediakan waktu untuk mempelajarinya.
PHP Developer yang baik harus disiplin. Disiplin dalam hal apa ? Disiplin dalam menulis kode yang rapi, disiplin dalam membuat dokumentasi kode, disiplin dalam menggunakan pattern.
Bagi saya pribadi, kedisplinan ini menunjukkan kualitas dan kedewasaan developer itu.
Untuk kemampuan teknis, ada hal-hal yang tidak kalah penting yang harus dimiliki. Kebanyakan PHP developer tidak menguasai hal-hal dibawah ini. Ini tidak bisa disalahkan karena memang buku-buku PHP di Indonesia kebanyakan kualitasnya rendah, dan hanya mengajarkan hal-hal dasar.
Apasih Revision control ? Bekerja dalam tim akan melipatkan banyak orang dan meningkatkan kompleksitas. Setiap perubahan dalam perangkat lunak harus dideteksi. Siapa yang merubah, kapan dan bagaimana. Apa yang harus dilakukan bila perubahan di satu fungsi mengakibatkan fungsi lain tidak bekerja. Semua ini harus didokumentasikan dengan baik dengan menggunakan revision control.
Apasih unit testing ? Hmm… Untuk menjamin kualitas perangkat lunak, harus dilakukan berbagai macam test. Secara garis besar urutannya seperti ini :
Unit testing adalah hal pertama yang dilakukan pada tahapan software testing. Biasanya unit testing menjadi satu dengan proses development. Unit testing dilakukan untuk mengetes fungsi-fungsi individual dalam perangkat lunak.
Sebagai contoh kita membuat kelas berisi fungsi untuk mengubah format tanggal yang diambil dari database. Untuk meyakinkan bahwa fungsi ini oke, kita harus membuat fungsi lain untuk mengetes fungsi ini.
Seberapa pentingkan OOP ? Penting agar bisa lulus wawancara kerja. Kualitas buku-buku PHP di Indonesia rendah, hanya sedikit yang membahas OOP. Malah yang membahas dengan baik tidak ada. Saya sendiri tidak ingat banget teorinya, cuman sering pakai tuh klo pas coding di codeigniter & Joomla.
Framework adalah tools baru yang muncul sekitar tahun 2005-an. Kebanyakan framework yang muncul menggunakan pattern MVC. Framework mempunyai banyak keuntungan. Reusablity code-kita banyak sekali. Banyak masalah-masalah yang sudah dipecahkan oleh orang lain, kita tinggal menggunakannya.
Framework juga menjadi banyak pilihan oleh perusahaan untuk mengembakan solusi kustom. Sebagai contoh : okezone & kompas.com yang menggunakan framework codeigniter.
Content Management System menjadi suatu hal yang wajib untuk seorang PHP developer. Hampir semua perusahaan menggunakan CMS dalam mengembangkan webnya.
Cobalah belajar Joomla atau Drupal. Habiskan waktu 1-2 bulan disini. Lihatlah dan buatlah kode-kode tambahan ( jangan buat modifikiasi di core CMS) akan membuka wawasan tentang bagaimana para profesional bekerja. Hal ini akan memberikan kontribusi yang sangat berharga untuk skillset kita.
Saya pikir, bila seseorang sudah menguasai minimal 8 kemampuan diatas, dia sudah bisa disebut sebagai PHP developer yang baik. Efeknya tentu saja, bila dikomunikasikan dengan tepat, dia bisa gampang cari kerja dan memilik daya tawar yang cukup, sehingga bisa terhindar dari masalah gaji rendah.