Pemrograman

Pemrograman

Buat Log Aplikasi PHP Anda Dengan Zend_Log (Bagian 3/Selesai)

Tulisan ini adalah lanjutan dari tulisan sebelumnya.

Penggunaan Zend_Log

Buat Log Aplikasi Php Anda Dengan Zend_Log (Bagian 2)

Tulisan ini adalah lanjutan dari tulisan sebelumnya.

Instalasi
Jika anda menggunakan Zend_Log secara terpisah dari Zend Framework maka terlebih dahulu buat direktori Zend di include path PHP, ataupun di direktori kerja anda, lalu masukkan Log.php dan folder Log ke dalamnya.

Buat Log Aplikasi Php Anda Dengan Zend_Log (Bagian 1)

Log sangat berperan penting bagi sebuah sistem. Dengan log kita dapat memonitor sistem yang sedang berjalan, dan juga menelusuri sumber masalah yang ada pada sistem.

Bagi programmer PHP, anda tidak perlu pusing memikirkan bagaimana membuat log yang benar pada aplikasi PHP anda. Dengan menggunakan Zend_Log maka semua kebutuhan untuk membuat log yang baik sudah terpenuhi.

Object dan Kloning Object di PHP

Pada PHP5, object tidak menyimpan nilai dari object itu sendiri, melainkan hanya menyimpan pengenal (identifier) yang dapat mengakses object yang sebenarnya. Pada saat menduplikasi object ke variabel lain ataupun menjadikannya sebagai argumen pada fungsi/method, tetap saja yang di duplikasi adalah identifier dari object tersebut bukan object yang sebenarnya.

Perbedaan GET dan POST Pada HTTP

Dalam membuat aplikasi web, tentunya kita sudah sering menggunakan metode GET dan POST dalam pengiriman data ke web server. Secara gamblang kita bisa menyebutkan perbedaan GET dan POST dari metode pengiriman data yang mereka gunakan. Yang mana dengan GET kita cukup mengirimkan data dengan menambahkannya di URI. Berikut contoh pengiriman data dengan metode GET

http://google.com?q=dolly+aswin+harahap

Dari contoh URI diatas, bisa diartikan bahwa kita mengakses web server google.com dan mengirimkan data melalui variabel q untuk di proses di web server google. Sedangkan untuk metode POST data tidak bisa dikirimkan melalui URI, kita harus mendefenisikan form dengan menggunakan method POST terlebih dahulu. Walaupun kita juga bisa mendefenisikan form dengan metode GET juga. Untuk itu disini saya mencoba menjelaskan perbedaan diantara keduanya lebih detail (maaf kalau ternyata kurang detail juga).

Metode GET Menurut RFC 2616
Dengan menggunakan metode GET, HTTP Client bisa mengambil informasi dari server dengan mengirimkan data melalui URI walaupun bisa juga dengan form yang menggunakan metode GET yang mana ujung - ujungnya duit data tersebut tetap dikirimkan juga melalui URI.

Hasil dari permintaan dengan metode GET dapat bersifat cacheable. Dan metode GET juga memiliki kondisional If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match, ataupun If-Range yang ditujukan untuk menentukan apakah hasil dari permintaan HTTP Client akan diberikan server atau tidak. Ini bertujuan untuk mengurangi trafik antara HTTP Client dan Server yang mana jika hasil permintaan hasil permintaan tersebut sudah pernah ada di HTTP Client (sudah pernah diminta sebelumnya) maka HTTP Server tidak lagi memberikan permintaan tersebut.

Metode POST Menurut RFC 2616
Metode POST digunakan untuk mengirimkan data dari HTTP Client untuk diproses di HTTP Server, kemudian HTTP server memberikan hasil dari proses tersebut ke HTTP Client. Data yang dikirimkan dengan metode POST disertakan pada baris permintaan (body of request) bukan pada URI. Dan hasil dari permintaan dengan metode POST ini tidak bersifat cacheable.

Contoh Komunikasi HTTP Client dan HTTP Server Dengan Metode GET
Berikut contoh komunikasi antara HTTP Client dan HTTP Server dengan metode GET

GET /info.php?serv=1 HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1)
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP Client meminta HTTP Server milik localhost untuk memberikan hasil dari info.php dengan mengirimkan data serv yang bernilai 1 ke HTTP Client. Setelah mendapat permintaan tersebut HTTP Server menjawab seperti ini:

HTTP/1.x 200 OK
Date: Fri, 11 Apr 2008 21:28:40 
GMTServer: Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 mod_python/3.2.10 Python/2.4.4 PHP/5.2.0-8+etch1 mod_ruby/1.2.6 Ruby/1.8.5(2006-08-25) mod_perl/2.0.2 Perl/v5.8.8
X-Powered-By: PHP/5.2.0-8+etch1
Keep-Alive: timeout=15, max=99
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

Contoh Komunikasi HTTP Client dan HTTP Server Dengan Metode POST
Berikut contoh komunikasi antara HTTP Client dan HTTP Server dengan metode POST.

POST /submit.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1)
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://localhost/submit.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 15 
         user=dolly&password=dollykeren

HTTP Client meminta HTTP Server milik localhost untuk memberikan hasil dari submit.php dengan mengirimkan data user dan password untuk diproses di server kemudian. Setelah mendapat permintaan tersebut HTTP Server menjawab seperti ini:

HTTP/1.x 200 OK
Date: Sat, 12 Apr 2008 00:03:00 
GMTServer: Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 mod_python/3.2.10 Python/2.4.4 PHP/5.2.0-8+etch1 mod_ruby/1.2.6 Ruby/1.8.5(2006-08-25) mod_perl/2.0.2 Perl/v5.8.8
X-Powered-By: PHP/5.2.0-8+etch1
Content-Length: 1234
Keep-Alive: timeout=15, max=99
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8

Dari jawaban HTTP Server diatas bisa diartikan bahwa permintaan dari HTTP Client dikabulkan (HTTP/1.1 200 OK). Kemudian HTTP Server memberikan permintaan HTTP Client tadi dan beberapa informasi seperti Date, Server dan selebihnya bisa lihat sendiri diatas.

Sebenarnya beginilah cara web browser (HTTP Client) berkomunikasi dengan web server (HTTP Server) dan ini disembunyikan dari anda. Lho koq bisa ketahuan juga? Caranya gampang, dan anda tidak perlu menjadi blogger hacker untuk mengetahuinya. Untuk web browser mozilla firefox tambahkan saja extension Live HTTP Header, untuk browser yang lain saya kurang tahu. Dan cara yang lebih geek lagi, gunakan telnet :p

Penggunaan Metode GET dan POST Dalam AJAX
Dalam AJAX penggunaan metode GET dan POST sebenarnya juga berbeda[3]. Untuk metode GET kita bisa langsung meminta ke HTTP Server dan mengirimkan data melalui URI. Berikut contoh penggunaan metode POST dalam AJAX:

  1. var url = "get_data.php";
  2. var params = "lorem=ipsum&name=binny";
  3. http.open("POST", url, true);
  4.  
  5. //Send the proper header information along with the request
  6. http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  7. http.setRequestHeader("Content-length", params.length);
  8. http.setRequestHeader("Connection", "close");
  9.  
  10. http.onreadystatechange = function() {
  11. //Call a function when the state changes.
  12. if(http.readyState == 4 && http.status == 200) {
  13. alert(http.responseText);
  14. }
  15. }
  16. http.send(params);

Sebenarnya beginilah cara penggunaan POST dan GET di dalam AJAX. Dan pada pustaka jQuery penggunaannya sudah lebih gampang tidak seperti ini lagi, sehingga antara metode POST dan GET kelihatannya sama.

Referensi:
[1] http://en.wikipedia.org/wiki/HTTP
[2] http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
[3] www.openjs.com.articles.ajax_xmlhttp_using_post.php

Serialisasi Variabel di PHP

Serialisasi (serialization) adalah suatu teknik di dalam bahasa pemrograman yang digunakan untuk merepresentasikan suatu data/variabel ke dalam string. Ini ditujukan agar data tersebut dapat disimpan di suatu file atau dikirimkan melewati koneksi jaringan ke komputer lain.

Apa Sih Framework Itu?

Berawal dari postingan saya sebelumnya, ada yang menanyakan tentang apa sih framework itu sebenarnya? Waktu itu saya coba menjelaskan framework secara singkat, dan itu belum bisa membuatnya mengerti. Baiklah, disini akan saya bahas lebih lanjut tentang pengertian framework ini.

Menurut kamus Inggris - Indonesia yang disusun oleh John M. Echols dan Hassan Sadily framework memiliki arti kerangka. Tetapi saya lebih suka mengartikan framework ini menjadi kerangka kerja. Kenapa disebut kerangka kerja? Karena pekerjaan yang akan dilakukan harus mengikuti dan tidak lari dari kerangka tersebut. Seperti tukang jahit yang menggunting kain untuk pakaian berdasarkan pola(framework) yang ada. Maklum ibu saya adalah tukang jahit, maka itu saya tahu akan hal ini.

Kembali ke dunia IT khususnya pemrograman, framework terdiri dari modul - modul yang mempunyai tugasnya masing - masing (menangani database, XmlRPC, email, dll) dan memiliki aturan pakai (aturan penulisan kode program, struktur direktori/file, dan penggunaan modul). Memang menjadi lebih rumit dan lebih lambat, bagi anda yang biasanya menulis kode program tanpa menggunakan framework. Tapi percayalah, jika sudah terbiasa menggunakan framework maka anda akan merasakan manfaatnya yang begitu luar biasa yaitu waktu pengerjaan dan kode yang lebih sedikit dan juga file - file anda lebih terstruktur.

Kita asumsikan anda disuruh untuk membuat program yang membaca RSS dan kemudian menampilkannya. Dengan menggunakan framework, kita hanya tinggal panggil modul yang menangani RSS, buat object, panggil methodnya, kemudian tampilkan. Simpel kan? Hanya beberapa baris kode saja. Hal ini akan sangat jauh berbeda jika anda mengerjakannya tanpa framework.

Contoh diatas adalah contoh membuat aplikasi yang sederhana. Seperti kata Julius Sirait "Tapi kalau udah 20 tabel dan dengan business logic yang memusingkan, tetap aja bikin sakit kepala".

Framework bukanlah kantong ajaib Doraemon yang akan memberikan apa yang anda minta. Framework hanya merupakan alat bantu. Jika anda disuruh merancang sitem yang besar, gunakanlah logika anda untuk merancangnya dan framework sebagai alat bantu untuk mengimplementasikan rancangan anda tersebut.

Saat ini tersedia banyak framework yang dapat anda pilih dan gunakan untuk membantu pekerjaan anda. Ada .NET (untuk membuat aplikasi yang jalan di Sistem Operasi Windows), Ruby On Rails (untuk membuat aplikasi web dengan bahasa Ruby), Django (untuk membuat aplikasi Web dengan bahasa Python) dan banyak lagi. Jadi intinya, framework ini dibuat untuk membantu pemrogram agar tidak memulai dari 0 (nol) lagi setiap projectnya. Mudah - mudahan penjelasan dan contoh diatas bisa membuat anda lebih mengerti.

Syndicate content