PHP : Hypertext Preprocessor ( Sumber : http://agiptek.com/index.php/pemograman/47-php/101-php.html )

PHP : Hypertext Preprocessor PDF Print E-mail
PHP adalah sebuah bahasa pemograman yang berjalan dalam sebuah web-server (server side). PHP diciptakan oleh programmer unix dan Perl yang bernama Rasmus Lerdoft pada bulan Agustus-September 1994. Pada awalnya, Rasmus mencoba menciptakan sebuah script dalam wesite pribadinya dengan tujuan untuk memonitor siapa saja yang pernah mengunjungi website-nya.
Pada awalnya PHP merupakan kependekan dari Personal Home Page (Situs personal). Selanjutnya Rasmus merilis kode sumber tersebut untuk umum dan menamakannya PHP/FI pada sekitar tahun 1995,  dan diperkenalkan kepada beberapa programmer pemula dengan alasan bahasa yang digunakan oleh PHP cukup sederhana dan mudah dipahami. Selanjutnya Rasmus menulis ulang PHP dengan bahsa C untuk meningkatkan kecepatan aksesnya.
Mulai bulan September sampai Oktober 1995, kode PHP ditulis ulang dan digabungkan menjadi PHP/F1. Baru di akhir tahun 1995 dirilis bagi umum secara gratis. Mengapa Rasmus membagikan ke publik secara gratis ? Rasmus berangapan apabila kode PHP ini berguna bagi dirinya, tentu juga akan bermanfaat untuk oranglain. Toh pada akhirnya akan kembali bermanfaat bagi dirinya sendiri.
Pada November 1997, dirilis PHP/FI 2.0. Pada rilis ini, interpreter PHP sudah diimplementasikan dalam program C. Dalam rilis ini disertakan juga modul-modul ekstensi yang meningkatkan kemampuan PHP/FI secara signifikan.

Pada tahun 1997, sebuah perusahaan bernama Zend menulis ulang interpreter PHP menjadi lebih bersih, lebih baik, dan lebih cepat. Kemudian pada Juni 1998, perusahaan tersebut merilis interpreter baru untuk PHP dan meresmikan rilis tersebut sebagai PHP 3.0 dan singkatan PHP dirubah menjadi akronim berulang PHP: Hypertext Preprocessing.

Pada pertengahan tahun 1999, Zend merilis interpreter PHP baru dan rilis tersebut dikenal dengan PHP 4.0. PHP 4.0 adalah versi PHP yang paling banyak dipakai pada awal abad ke-21. Versi ini banyak dipakai disebabkan kemampuannya untuk membangun aplikasi web kompleks tetapi tetap memiliki kecepatan dan stabilitas yang tinggi.

Pada Juni 2004, Zend merilis PHP 5.0. Dalam versi ini, inti dari interpreter PHP mengalami perubahan besar. Versi ini juga memasukkan model pemrograman berorientasi objek ke dalam PHP untuk menjawab perkembangan bahasa pemrograman ke arah paradigma berorientasi objek.
Hingga saat ini (Januari 2011) PHP sudah merilis versi 5.3.5


Yang bisa dilakukan PHP
Script PHP adalah bahasa program yang berjalan pada sebuah webserver, atau sering disebut server-side. Oleh karena itu,PHP dapat melakukan apa saja yang bisa dilakukan program CGI lain, yaitu mengolah data dengan tipe apapun, menciptakan halaman web yang dinamis, serta menerima dan menciptakan cookies, dan bahkan PHP bisa melakukan lebih dari itu.

Arti script server-side adalah, agar dapat menjalankan script ini dibutuhkan tiga program utama, yaitu web-server (dapat berupa IIS dari windows atau apache), modul PHP dan juga web browser.

PHP dapat berjalan pada semua jenis system operasi, antara lain pada Linux dan varian Unix (HP-UX, Solaris dan OpenBSD), pada Ms Windows, Mac dan masih banyak lag, selain itu PHP juga dapat berjalan pada beberapa jenis web-server antara lain Apache, Microsoft IIS, personal webserver,  Netscape dan Iplanet Server, Caudium, Xitami, Omnihttpd dan masih banyak lagi.

Apabila Anda menggunakan PHP, maka Anda banyak memiliki alernatif Sistem Operasi atau webserver untuk menjalankannya, selain itu Anda juga dapat menajalankan atau menggunakan program berorientasi object atau sering disebut Object Oriented Programming (OOP).

Output yang dihasilkan PHP bukan hanya HTML, namun juga dalam bentuk gambar, file PDF, serta gambar animasi menggunakan Libswf dan Ming. Output yang lain denganjenis teks dapat berupa file XHTML dan XML.

Script PHP Anda akan disembunyikan dalam server dan output teks yang ditampilkan di browser adalah format teks HTML, XHTML atau XML.

PHP juga banyak mendukung database populer yang sering digunakan dalam beberapa web server, antara lain Adabas D, Empress, FrontBase, PostgreSQL , FIlePro(read only), mSQL, Solid, Hyperwave, Direct MS-SQL, Sybase, IBM DB2, MySQL, Velocis, Informix, ODBC dan Unix dbm.

PHP juga mendukung koneksi denganlayanan jasa yang menggunakan protokol seperti LDAP, IMAP, SNMP, NNTP, POP3, HTTP dan COM (pada windows). Selain itu, juga dapat melakukan koneksi dengan jaringan yang menggunakan protokol lain, PHP mempunyai dukungan WDDX, sehingga dapat bertukar data antar bahasa pemograman web.
Prinsip Kerja PHP
System kerja dari PHP diawali dengan permintaan yang beasal dari halaman website oleh browser. Berdasarkan URL atau alamat website dalam jaringan internet, browser akan menemukan sebuah alamat dari webserver, mengidentifikasi halaman yang dikehendaki, dan menyampaikan segala informasi yang dibutuhkan oleh webserver.

Selanjutnya webserver akan mencarikan berkas yang diminta dan menampilkan isinya di browser. Browser yang mendapatkan isinya segera menerjemahkan kode HTML dan menampilkannya.

Lalu bagaimana apabila yang dipanggil oleh user adalah halaman yang mengandung script PHP ? Pada prinsipnya sama dengan memanggil kode HTML, namun pada saat permintaan dikirim ke web-server, web-server akan memeriksa tipe file yang diminta user. Jika tipe file yang diminta adalah pHP, maka akan memeriksa isi script dari halaman PHP tersebut.

Apabila dalam file tersebut tidak mengandung script PHP, permintaan user akan langsung ditampilkan ke browser, namun jika dalam file tersebut mengandung script PHP, maka proses akan dilanjutkan ke modul PHP sebagai mesin yang menerjemahkan script-script PHP dan mengolah script tersebut, sehingga dapat dikonversikan ke kode-kode HTML lalu ditampilkan ke browser user.

Pemrograman berorientasi objek PDF Print E-mail
Pemrograman berorientasi objek (Inggris: object-oriented programming disingkat OOP) merupakan paradigma
pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas
atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data,
dan mengirim pesan ke objek lainnya,
Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan
luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi
pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat

Konsep dasar dari Pemrograman Berorientasi Objek

Pemrograman orientasi-objek menekankan konsep berikut:
  • kelas — kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh 'class of
dog' adalah suatu unit yang terdiri atas definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam
perilaku/turunan dari anjing. Sebuah class adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi
object. Sebuah class secara tipikal sebaiknya dapat dikenali oleh seorang non-programmer sekalipun terkait dengan domain
permasalahan yang ada, dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan independen
(sebagaimana kode tersebut digunakan jika tidak menggunakan OOP). Dengan modularitas, struktur dari sebuah program
akan terkait dengan aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara seperti ini akan
menyederhanakan pemetaan dari masalah ke sebuah program ataupun sebaliknya.
  • Objek - membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah program komputer; objek merupakan dasar
dari modularitas dan struktur dalam sebuah program komputer berorientasi objek.

  • Abstraksi - Kemampuan sebuah program untuk melewati aspek informasi yang diproses olehnya, yaitu kemampuan untuk
memfokus pada inti. Setiap objek dalam sistem melayani sebagai model dari "pelaku" abstrak yang dapat melakukan kerja,
laporan dan perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan
bagaimana kelebihan ini diterapkan. Proses, fungsi atau metode dapat juga dibuat abstrak, dan beberapa teknik digunakan
untuk mengembangkan sebuah pengabstrakan.
  • Enkapsulasi - Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi ijin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.
  • Polimorfisme melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan; metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesa tersebut dikirim. Contohnya, bila sebuah burung menerima pesan "gerak cepat", dia akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang sama, dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme karena sebuah variabel tungal dalam program dapat memegang berbagai jenis objek yang berbeda selagi program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai polimorfisme melalui penggunaan fungsi kelas-pertama.
  • Inheritas- Mengatur polimorfisme dan enkapsulasi dengan mengijinkan objek didefinisikan dan diciptakan dengan jenis khusus dari objek yang sudah ada - objek-objek ini dapat membagi (dan memperluas) perilaku mereka tanpa harus mengimplementasi ulang perilaku tersebut (bahasa berbasis-objek tidak selalu memiliki inheritas.)
  • Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sebagai contoh anggap kita memiliki sebuah departemen yang memiliki manager, sekretaris, petugas administrasi data dan lainnya. Misal manager tersebut ingin memperoleh data dari bag administrasi maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bag administrasi untuk mengambilnya. Pada kasus tersebut seorang manager tidak harus mengetahui bagaimana cara mengambil data tersebut tetapi manager bisa mendapatkan data tersebut melalui objek petugas adminiistrasi. Jadi untuk menyelesaikan suatu masalah dengan kolaborasi antar objek-objek yang ada karena setiap objek memiliki deskripsi tugasnya sendiri.
Bahasa pemrograman yang mendukung OOP antara lain:
  1. Visual Foxpro
  2. Java
  3. C++
  4. Pascal (bahasa pemrograman)
  5. Visual Basic (VB 5-6 dan VB.net)
  6. SIMULA
  7. Smalltalk
  8. Ruby
  9. Python
  10. PHP
  11. C#
  12. Delphi
  13. Perl
Sedikit pemahaman tentang apa itu framework PDF Print E-mail
Untuk memahami apa itu framework, mungkin ilustrasi berikut ini akan sendikit membantu kita untuk memahami apa itu framework.

Agus adalah seorang programmer freelance. Ia baru lulus kuliah dan sedang mencari kerja. Setelah cari sana sini melalui website ia kemudian mendapatkan order proyek pembuatan website. Dengan senang ia kerjakan proyek tersebut.

Ia mendesain sistem dan melakukan coding dari awal, sehingga cukup menguras energi.

Akhirnya proyek selesai dan client senang dengan pekerjaannya. Honor yang diterima lumayan besar. Kemudian client tersebut bersedia merekomendasikannya jika ada perusahaan lain yang ingin membuat website. Mission complete.

Dua minggu kemudian, perusahaan lain memesan pembuatan website dengan permintan fitur yang hampir sama dengan pemesan sebelumnya. Lansung saja proyek itu diterima dan dikerjakannya.

Agus kembali melihat kode program pada proyek pertamanya, mengedit bagian yang perlu dan menggunakannya pada proyek yang kedua, sehingga pada proyek kali ini ia berhasil mengerjakannya lebih cepat dari proyek pertama.

Dalam pembuatan proyek website kedua, Agus menyadari bahwa ada baigan-bagian perogram yang biasanya harus selalu ada untuk digunakan, misalnya kode untuk koneksi ke database MySql, membuat pagination untuk tampilan data, atau email. Dengan demikian, Agus membuat koleksi kode program yang bisa sewaktu-waktu ia gunakan jika ia membutuhkanya. Sehingga bisa menghemat tenaga dan waktunya dalam mengerjakan sebuah website.

Apa yang dilakukan Agus adalah cikal bakal sebuah framework, sehingga dalam pengertian yang sangat sederhana, framework dapat diartikan sebagai koleksi atau kumpulan potongan-potongan program yang disusun atau diorganisasikan sedemikian rupa, sehingga  dapat digunakan untuk membantu membuat aplikasi utuh tanpa harus membuat semua kodenya dari awal.

Menurut pengalaman saya, mengembangkan program yang dibuat oleh orang lain lebih sulit dibandingkan dengan membuat program tersebut dari awal, karena setiap programmer punya style/gaya yang berbeda-beda dalam programming(membuat program), parahnya lagi kebanyakan gaya yang dianut programmer adalah gaya 'langsung hajar', tidak ada dokumentasi dan tidak ada komentar/ keterangan dalam programnya

Bayangkan jika kita harus mengembangkan ulang program seperti itu !!? Misalkan saja kita akan menambahkan modul atau fitur baru, belum lagi kalau harus memperbaiki bug-bug errornya, tentu kita harus menguasai gaya programmingnya programmer tersebut. Celakanya lagi, kebanyakan program diproteksi/disembunyikan agar tidak mudah dimodifiksi, bahkan ada yang pakai enkripsi segala, bisa kriting otak kita mengembangkan program seperti itu, lebih baik membuat dari awal pakai gaya pemograman kita sendiri.

Melihat fenomena tersebut, banyak perusahaan yang mensyaratkan programmernya menguasai framework, faktanya bisa dilihat melalui lowongan kerja programmer, baik dimedia cetak maupun dimedia online. Alasannya jelas, dengan framework, gaya programmingnya sudah ditentukan menurut aturan dari framework tersebut, jadi tidak bisa lagi membuat program dengan gayanya sendiri-sendiri. Karena secara umum, programmer disuatu perusahaan sistemnya kontrak, jadi tingkat turn overnya cukup tinggi (gonta-ganti programmer adalah hal yang lumrah disuatu perusahaan).

Nah apabila program tersebut dikembangkan menggunkan framework, maka siapapun programmernya, asalkan dia menguasai framework, maka bisa dipastikan di bisa mengembangkan prgoram tersebut dengan muda, karena gaya programnya sudah diseragamkan oleh aturan framework, sampai disini saya kira sudah cukup jelas salah satu kegunaan dari framework.

Secara sederhana bisa dijelaskan bahwa framework adalah kumpulan fungsi (libraries), maka seorang programmer tidak perlu lagi membuat fungsi-fungsi (biasanya disebut kumpulan library) dari awal, programmer tinggal memanggil kumpulan library atau fungsi yang sudah ada didalam framerwork, tentunya cara menggunakan fungsi-fungsi itu sudah ditentukan oleh framework. Beberapa contoh fungsi-fungsi standar yang telah tersedia dalam suatu framework adalah fungsi paging, enkripsi, email, SEO, session, security, kalender, bahasa, manipulasi gambar, grafik, tabel bergaya zebra, validasi, upload, captcha, proteksi terhadap XSS(XSS filtering), template, kompresi, XML dan lain-lain.

Saat ini banyak sekali framework berbasis PHP, diantaranya yang paling populer adalah Zend Framework, Symphony, Prado, CakePHP, CodeIgniter (ini adalah favorit saya) dan lain-lain.

Menurut beberapa survei, CodeIgniter adalah framework yang paling mudah dipelajari, karena keserhanaan strukturnya dan kelengkapan dokumentasinya yang baik. Selain itu, kerapian kode (clean and healthy code) dan ukurannya yang ramping membuatnya lebih cepat diakses dibandingkan dengan framework lainya.

Perlu diketahui nyaris (bahkan mungkin semua) framework menggunakan konsep yang sama dalam membangun suatu aplikasi, yaitukonsep MVC (Model View Controller). Kesimpulannya, kalau kita memahami MVC, maka secara garis besar kigta sudah menguasai framework, apapun jenis frameworknya. Dan satu lagi kuncinya, pemahaman terhadap OOP (Object Oriented Programming) akan sangat membantu dalam menguasai framework.

Comments