Mengenal Teknologi dan Komponen PHP

php-logoKebanyakan siswa dan mahasiswa yang belajar pemrograman PHP akan mengikuti langkah standar seperti instalasi XAMPP, run Apache, Run MySQL lalu buka Notepad++ dan mulailah koding. Ada yang salah dengan langkah awal tersebut? Oh ga ada, cuma masalahnya kebanyakan (maha)siswa tidak paham dengan konsep PHP itu sendiri, apa kelebihannya, apa itu pear package, apa itu Modul, apa itu php.ini dan seterusnya.

Artikel ini akan membahas komponen PHP dan teknologi berbasis PHP yang banyak dipakai di internet serta komponen apa saja yang ada dibelakang PHP. Ini semua memang toeri dan konsep, namun bukankah para penerbang pesawat Jet tempur juga harus belajar teori dulu salama beberapa tahun baru boleh menerbankan pesawat bukan? Saya terdorong menulis artikel ini karena banyaknya masalah PHP yang bukan disebabkan oleh permasalahan Logika atau coding, namun perbedaan konfigurasi PHP antara satu server dengan server yang lain dan antara Satu bundle WAMP dengan bundle yan lain. Perbedaan versi dan bundle Apache, PHP, MySQL membuat kode PHP menjadi ‘tidak portabel’.

PHP adalah bahasa pemrograman server

Ini adalah konsep pemrograman PHP paling dasar, code PHP di eksekusi diserver, bukan di browser.  Jika anda memakai XAMPP maka anda harus meletakan kodenya di XAMPP\htdocs, pemakai Linux biasanya meletakannya di folder /var/www sedangkan pemakai AppServ meletakannya di AppServ/www. Anda tidak bisa menklik dua kali file php lalu dibuka di browser secara langsung.

Mungkinbagi yang sudah mahir PHP akan bilang, semua orang juga tahu mas? Hallo? jika anda pernah jadi pengajar/trainer PHP, anda akan melihat bagaimana para pemula akan mengalami kesalahan pertama ini. Saya sudah mengajar lebih dari 5 tahun dan selalu saja ada siswa yang tidak paham dengan konsep PHP adalah server side programming.

Ekstensi File PHP

PHP biasanya diberi ektensi .php, .php3 ataupun ektensi lain suka suka anda. Nah loh, maksudnya? Ektensi php di atur oleh apache di httpd.conf bahkan anda bisa mengunakan ektensi .jsp atau .aspx padahal sebenarnya pake PHP, namun ingat hal itu perlu konfigurasi server apachenya. Jika anda tidak tahu, tetap konsisten mengunakan ektensi .php.

 

 File Konfigurasi PHP bernama php.ini

php.ini adalah konfigurasi php yang mengatur bagaimana kode php di eksekusi. Jika di XAMPP, letaknya ada di XAMPP\php.php.ini. Ini adalah komponen paling penting di PHP. Jika program bisa berjalan di satu komputer/server lalu anda coba sendiri kok tidak berjalan, maka 99% dipastikan penyebabnya adalah perbedaan konfigurasi PHPnya dan kemungkinan kedua baru perbedaan versi phpnya. Agar lebih jelas, silahkan baca artikel saya Mengenal konfigurasi PHP.

PEAR

PEAR kependekan dari PHP Extention and Repository. Saya pernah menulis artikel tentang cara kirim email dengan PHP memanfaatkan paket MAIL dari PEAR.php.net. Sayannya pertanyaan yang paling banyak muncul justru bingung dengan perinah pear dan cara instalasi paket Mail.  Sejauh ini, cara instalasi pake pear memang menggunakan konsole, sayannya karena fokus dengan Editor PHP dan GUI jadi kebanyakan programer pemula bingung kalau ada tutorial pake Pear. Paket pear sangat banyak jumlahnya, anda bisa melihatnya di http://pear.php.net/packages.php. Anda bisa melihat paket pear yang terinstall di komputer dengan membuka folder XAMPP\php\pear.

PHP Module /Extention

PHP module adalah komponen PHP yang dibuat dengan bahasa C, biasanya formatnya *.dll atau.so. Salah satu modul yang terkenal adalah mod_rewrite yang sering dipakai oleh framework dan beberapa CMS. Modul php adalah komponen yang harus diaktifkan serta fitur baru aktif . PHP merupakan bahasa pemrograman yan modular, selain mod_rewrite masih ada modul yang lain seperti mod_pdo, mod_zip, mod_xml dan seterusnya.

Biasanya beberapa CMS dan framework meminta kita mengaktifkan modul ini. Jika modul tidak tersedia maka php akan menampilkan error, maka anda harus mendownload modul tersebut baru kemudian mengaktifkannya lewat php.ini. Jika anda ingin melihat modul apa saja yang terinstall di XAMPP, silahkan masuk ke fodler XAMPP\php\ext.

PHP Class Library

Kadang, ada orang yang membuat kelas PHP dan menjadikannya sebuah library untuk memudahkan orang lain membuat aplikasi dengan kasus yang mirip, repository php library ini bisa diakses di  phpclassses.org. Contoh kasusnya anda ingin membuat aplikasi yang membutuhkan captcha, dari pada implementasi sendiri, mending pake class php yang sudah tersedia.

Composer

,jika anda pernah install software di ubuntu dengan perintah apt-get, maka composer ini adalah apt-getnya PHP. Hah apa lagi itu? gini aja deh, intinya dengan composer kita dengan mudah mengelola dependecy komponen dari pihak ketiga. Contohnya tadi masalah captcha, kalau kita buat aplikasi butuh captcha, terus komponennya ga ada atau outdate, gimana cara mengatasinya? gunakan composer. Composer juga sudah punya repo class library siap pakai yang bisa anda lihat di packageist.com.

PHP Framework

Berbeda dengan PHP class libary, php framework adalah sekumpulan kelas yang bernaung dalam satu paket dan mempunyai seluruh fitur yang dibutuhkan untuk membuat aplikasi web. Biasanya php framework ini akan memudahkan programer dengan proses CRUD, routing, AJAX, validasi Auth dan sejenisnya. Framework yang cukup populer adalah CodeIgniter, Yii Framework, Laravel dan Zend framework.

Teknologi berbasis PHP

teknologi berbasis PHP sangat banyak, saya beri contoh singkat, untuk CMS ada wordress, joomla, drupal. Untuk ecommerce ada magento, prestashop dan zenchart. Selain itu, ada juga teknologi pembuatan aplikasi GUI dengan PHP, proyek ini bernama PHP-GTK. Facebook sendiri dikembangkan dengan PHP, namun karena PHP tidak optimal jika menangani jutaan pengunjung perhari, maka Facebook membuat teknologi baru yang bernama HVVM. HVVM adalah virtual machine PHP yang akan menkompilasi PHP dengan teknologi JUST IN TIME compilation. Bingung? gampangnya PHP itu aslinya bahasa interpreter, agar kode php berjalan cepat, maka kode PHP tadi di kompilasi menjadi bahasa mesin virtual. Nah hasil kompilasi inilah yang dijalankan di server.

 

Hubungan antara Pemrograman dengan Murphy’s Law

murphys-lawJika anda sekilas membaca dulu artikel ini, mungkin anda berpikir bahwa mungkin judulnya dikira pemrograman dengan Moore’s law. Artikel ini tidak salah judul, Artikel ini memang membahas tentang pemrograman dan Murphy’s Law. Bagi yang belum tahu, berikut ini adalah definisi murphy’s Law.

“If Something bad Could Happen, It WILL happen!”

Dengan bahasa sederhana, Jika sesuatu yang buruk mungkin terjadi, hal tersebut (cepat atau lambat) PASTI AKAN TERJADI ! Bentuk lain (variasi)  dari kalimat daitas adalah sbb:

If Anything can Go Wrong, It Will

Contoh di dunia nyata

Contoh murphy’s law banyak terjadi di dunia nyata berikut ini adalah contoh umumnya

  1. Jika seseorang belajar naik sepeda (motor), dia bisa jatuh, dan PASTI (CEPAT ATAU LAMBAT) dia jatuh.
  2. Seorang yang pinter bisa gagal dalam ujian . Cepat atau lambat orang ini gagal dalam ujian, entah ujian test, ujian tertulis, ujian CPNS dan sebagainya.
  3. Seorang pemain bola bisa cidera, Cepat atau lambat PASTI pemain bola cedera, tergantung apakah cidera ringan atau berat.

Sekarang kita persempit dalam dunia komputer, berikut ini adalah contoh kejadiannya

  1. Jika komputer ngehang, kemungkinan data yang belum disave akan hilang!
  2. Jika komputer panas, kemungkinan komputer akan shutdown dengan sendirinya.
  3. Jika program berjalan lancar dimasa sekarang, kemungkinan akan terjadi error di masa depan.

Perhatikan contoh diatas, benar kan?  Sekarang kita fokus ke pemrograman dan hubungannya dengan murphy’s law. Namun sebelum lebih jauh, apa manfaat yang kita bahas ? Manfaat utama memahami murphy laws adalah kita lebih teliti dalam koding, validasi, exception handling dan lebih sabar dalam testing karena segala kemungkinan bisa terjadi.

Validasi input dan Murphy Laws

Ciri khas programer pemula adalah cepat dalam membuat kode dan mengambil keputusan. namun tidak tiliti dalam masalah validasi. Saya beri contoh masalah validasi email saat user mendaftar. Banyak programer yang asal program jalan dan tidak memikirkan pemakaian  aplikasi dari sisi user. Hukum validasi input dalam murphy laws adalah sebagai berikut :

Jika sebuah input tidak divalidasi, maka (PASTI) ada input yang tidak valid(cepat atau lambat).

Perhatikan contoh email ini, mungkin sebagian orang lupa mengisi form email, sebagian lagi mengisi kolom email dengan nama, sebagian lagi mengisi kolom email dengan input asal dan sebagainya. Seorang programer harus memperhatikan validasi jika ingin memperkecil efek murphy laws. Akan lebih bagus lagi sudah memperhitungkan jika sesuatu yang buruk terjadi sudah ditangani oleh kode. Misalkan jika input email tidak valid muncul peringatan, atau jika ada orang salah tulis email candra@gnail.com, sistem secara otomatis memberi saran apakah yang anda masuk candra@gmail.com?

Sekali lagi, hanya karena program tidak ada error saat di compile atau di run, bukan berarti tidak ada Bug. Teliti dan tangani segala kemungkinan dalam masalah validasi anda ,jika ingin membuat program yang handal.

Exception dan Murphy Laws

Exception adalah kondisi dimana Murphy Laws terjadi. Contohnya anda membuat program untuk mendapatkan lokasi user di Android. Code anda cuma memikirkan bagaimana mendapatkan lokasi dengan sensor TANPA memikirkan apakah Device  tersebut menyediakan GPS, kemungkinan yang lain bisa saja device GPSnya a da tapi belum di aktifkan.

Sebagai seorang programmer, exception adalah bentuk kejadian buruk di murphy laws dan tugas kita sebagai programmer untuk membuat exception dan menangani dengan benar , biasanya dalam bahasa pemroraman ada itur Try…Catch ….Finally yang menggambarkan hukum murphy laws itu sendiri.

bentuk  kalimat dari kasus diatas adalah sebaai berikut :

Jika sebuah aplikasi android membutuhkan GPS, maka ada kemungkinan GPS tidak tersedia atau belum di aktifkan.

Bentuk try catchnya adalah

Try {

apakah GPS ada?

apakah GPS aktif?

jika aktif, maka dapatkan lokasi user

} catch{

wah gagal mendeteksi device GPS

wah gagal mengaktifkan GPS

waduh, gagal mendapatkan lokasi user

} finally {

tampilkan pesan eror

}

Testing dan Murphy Laws

Jika sebuah program tidak dilakukan testing, maka akan terjadi error saat dipakai di client (PASTI). Sering banget kan kita melihat program asal jadi lalu langsung dilempar ke client? efeknya ya tahu sendiri, bukan hanya client kecewa, namun image perusahaan akan ambruk. Salah satu efek dari tidak adanya testing atau testing yang asal asalan karena mengejar deadline adalah produk Apple maps.

Saat pertama kali di luncurkan, banyak terjadi ketidakakuratan dan banyaknya orang tersesat saat berkendara karena mengandalkan apple maps. Testing adalah bagian paling penting dalam pemrorgraman.  Pengelaman saya sendiri, testing itu memakan waktu lebihvdari 50% dari total pengerjaan proyek. Membuat program yang bagus memang susah, sudah seharusnya perkara testing di nomor satukan.

Testing sendiri sebenarnya mempercepat ‘murphy’s law ‘ terjadi. Agar error yang di alami oleh user sudah diprediksi dan ditangani oleh programmer. Konsep penting disini , kita tidak bisa menjegah murphy laws terjadi, yang kita lakukan adalah menangani jika murphy’s law terjadi. Jika anda membuat aplikasi android yang butuh koneksi internet, cek apakah program error saat koneksi tidak ada? saat koneksi lambat? atau saat server down? itu semua adalah bagian dari murphy laws yang harus diperhatikan bagian testing.

Akhirnya, sebagai programmer, saya mengajak agar perkara testing dijadikan perkara utama dan mendapat porsi besar dalam ‘software development life cycle’. Jika anda tidak perhatian dengan hal ini maka anda akan kena hukum murphy’s law dari sisi client

 Hubungan antara client dan Murphy’s Law

  1. Jika anda tidak memperdulikan masukan client, maka client akan meningalkan anda!
  2. jika hasil kerja anda jelek, maka kemungkinan client akan menjelek2an pekerjaan anda ke rekan bisnisnya
  3. Jika program melebihi deadline pekerjaan, maka client akan kecewa!

Penutup

Ide menulis artikel ini datang dari website http://www.murphys-laws.com dan Trailler “INTERSTELLAR” yang akan tayang di bulan november tahun ini. Semoga artikel ini bermanfaat!