9 modul php advance

Upload: muhsoleh17

Post on 06-Jul-2015

443 views

Category:

Documents


2 download

TRANSCRIPT

PHP AdvanceLP3T NurulFikri, 2010 Sirojul Munir

Program Reguler & Inhouse

PHP Advance

DAFTAR ISIDAFTAR ISI.....................................................................................................................................i Kata Pengantar................................................................................................................................iv Bab 1. Merancang Website..............................................................................................................1 1.1.Tujuan:..................................................................................................................................1 1.2.Tahapan merancang website.................................................................................................1 1.2.1 Struktur website.............................................................................................................1 1.2.2 Sequence........................................................................................................................1 1.2.3 Hierarchies.....................................................................................................................2 1.3.Diagram Website...................................................................................................................2 1.3.1 Struktur file dan direktori website.................................................................................3 1.3.2 Merancang Menu Website.............................................................................................3 1.4.Template website...................................................................................................................5 1.4.1 Jenis tampilan template.................................................................................................5 1.5.Membuat template sederhana................................................................................................7 1.5.1 Mock up aplikasi...........................................................................................................7 1.6.Menu interaktif....................................................................................................................10 1.6.1 Membuat Menu...........................................................................................................10 Bab 2. Variable dan Fungsi............................................................................................................12 2.1.Tujuan .................................................................................................................................12 2.2.Variabel...............................................................................................................................12 2.2.1 Mendefinisikan Variabel..............................................................................................12 2.2.2 Indirect References Variabel........................................................................................13 2.2.3 Mengatur Variabel ......................................................................................................13 2.2.4 Superglobal..................................................................................................................14 2.3.Fungsi..................................................................................................................................15 2.3.1 Fungsi yang didefinisikan user....................................................................................15 2.4.Skup variabel dan Fungsi....................................................................................................16 2.4.1 Return By Value..........................................................................................................17 2.4.2 Return By References..................................................................................................17 2.5.Parameter Fungsi.................................................................................................................18 2.5.1 Parameter By Value.....................................................................................................18 2.5.2 Parameter By References............................................................................................18 2.6.Default Parameter ..............................................................................................................18 Bab 3. Object Oriented Programming ..........................................................................................20 3.1.Tujuan:................................................................................................................................20 3.2.Pengertian OOP...................................................................................................................20 3.3. Mendefinisikan Class.........................................................................................................21 3.4.Keyword new dan Constructor class...................................................................................21 3.5.Destructor............................................................................................................................22 3.6.Akses Method dan Properties dengan keyword $this.........................................................23 3.7.Public, protected dan private properties..............................................................................23 3.8.public, protected dan private Method..................................................................................24 3.9.Static Properties ( Variabel Static ).....................................................................................25 3.10.Static Method....................................................................................................................27 3.11.Konstanta Pada Class........................................................................................................27 LP3T NurulFikri i

Program Reguler & Inhouse

PHP Advance

3.12.Polymorphism...................................................................................................................28 3.13.parent:: dan self::...............................................................................................................32 3.14.Operator instanceof...........................................................................................................33 3.15.Method Abstract dan Class...............................................................................................34 3.16.Interfaces...........................................................................................................................36 3.17.final Method......................................................................................................................38 3.18.final Class..........................................................................................................................38 3.19.Method __toString( ).........................................................................................................39 Bab 4. Pustaka Database PDO.......................................................................................................40 4.1.Tujuan:................................................................................................................................40 4.2.Lapisan Abstraksi Database................................................................................................40 4.3.PDO : Portable Data Objects..............................................................................................41 4.4.Koneksi ke database ...........................................................................................................41 4.4.1 Koneksi ke database MySQL......................................................................................41 4.4.2 Koneksi ke database PostgreSQL................................................................................42 4.4.3 Koneksi melalui ODBC...............................................................................................42 4.4.4 Menangkap eksepsi kesalahan ....................................................................................42 4.5.Fungsi-Fungsi pada PDO....................................................................................................43 4.5.1 Fungsi exec( ) .............................................................................................................43 4.5.2 Fungsi query() ............................................................................................................44 4.5.3 Fungsi execute() .........................................................................................................44 4.5.4 Fungsi fectch() ...........................................................................................................45 4.5.5 Fungsi fectchAll() ......................................................................................................45 4.5.6 Fungsi rowCount()......................................................................................................46 4.5.7 Tips Error Buffered Query...........................................................................................46 Bab 5. Transaksi Database.............................................................................................................47 5.1.Tujuan:................................................................................................................................47 5.2.Apa itu transaksi database ?................................................................................................47 5.3.Transaksi pada database MySQL........................................................................................48 5.3.1 Database dengan format table InnoDB.......................................................................48 5.3.2 Contoh kasus transaksi................................................................................................48 5.3.3 Transaksi dengan menggunakan library PDO.............................................................49 Bab 6. MySQL Store Procedure & Trigger...................................................................................50 6.1.Tujuan:................................................................................................................................50 6.2.Store Procedure...................................................................................................................50 6.2.1 Perintah Create Procedure dan Function.....................................................................50 6.2.2 Contoh Kasus Sederhana.............................................................................................51 6.2.3 Memanggil Store Procedure........................................................................................51 6.2.4 Menghapus Prosedure Hitung Pegawai.......................................................................51 6.3.Contoh Kasus Store Procedure Pembelian Produk.............................................................51 6.3.1 Procedure pembelian_produk......................................................................................51 6.3.2 Memanggil procedure .................................................................................................52 6.3.3 Menjalankan store procedure dalam PHP ..................................................................52 6.4.Trigger ................................................................................................................................53 6.4.1 Perintah Trigger ..........................................................................................................53 6.4.2 Contoh Trigger pada kasus pembelian produk............................................................53 Bab 7. Input Output File.............................................................................................................54 7.1.Tujuan:................................................................................................................................54 7.2.Operasi File.........................................................................................................................54 LP3T NurulFikri ii

Program Reguler & Inhouse

PHP Advance

7.2.1 fopen() ........................................................................................................................54 7.2.2 fclose() ........................................................................................................................55 7.2.3 feof() ...........................................................................................................................55 7.2.4 file_exists() .................................................................................................................55 7.2.5 fgets() ..........................................................................................................................55 7.2.6 fputs() .........................................................................................................................56 7.2.7 file() ............................................................................................................................56 7.2.8 filesize() ......................................................................................................................57 7.3.Upload file...........................................................................................................................57 7.3.1 Form upload file..........................................................................................................57 7.3.2 Skrip upload file..........................................................................................................57 7.3.3 Membatasi ukuran file dan tipe file upload.................................................................58 7.3.4 Simpan file upload.......................................................................................................58 Bab 8. Menggunakan External Library..........................................................................................59 8.1.Tujuan:................................................................................................................................59 8.2.Mengapa menggunakan eksternal library...........................................................................60 8.3.Paket PEAR::HTML_QUICKFORM.................................................................................60 8.3.1 Download dan Install paket HTML_QuickForm........................................................60 8.3.2 Membuat object Form.................................................................................................60 8.3.3 Menambahkan Elemen Form.....................................................................................60 8.3.4 Menambahkan Rule pada elemen Form......................................................................61 8.3.5 Validasi Form...............................................................................................................61 8.3.6 Menangkap request Form............................................................................................62 8.3.7 Proses Form ke database ............................................................................................62 Bab 9. Paging.................................................................................................................................64 9.1.Tujuan:................................................................................................................................64 9.2.Kebutuhan paging...............................................................................................................64 9.3.Query Limit dan Offset.......................................................................................................64 9.4.Paging database MySQL.....................................................................................................65 Bab 10. Session Role Permission..................................................................................................67 10.1.Tujuan:..............................................................................................................................67 10.2.Apa itu Session..................................................................................................................67 10.3.Fungsi-Fungsi Session......................................................................................................67 10.4.User Apliksi.......................................................................................................................68 10.5.Role Permission................................................................................................................69 10.6.Login Aplikasi...................................................................................................................70 10.7.Logout ..............................................................................................................................71 Bab 11. Error Handling..................................................................................................................72 11.1. Level Error.......................................................................................................................72 11.2.Konfigurasi Error pada php.ini..........................................................................................74 11.3.Tabel Error Handling.........................................................................................................74 11.4.Custom Error.....................................................................................................................76 11.5.Trigger Error......................................................................................................................78 11.6.Log Error...........................................................................................................................81 11.7.Exception ..........................................................................................................................82 11.7.1 Apa itu Exception ?...................................................................................................82 11.7.2 Try Catch ..................................................................................................................83 11.7.3 Extends Exception.....................................................................................................83

LP3T NurulFikri

iii

Program Reguler & Inhouse

PHP Advance

Kata Pengantar

Assalamualaikum Wr.Wb Alhamdulillah, puji syukur kami haturkan kehadirat Allah SWT semata. Atas berkat rahmat dan hidayahnya Buku Panduan Mata Kuliah Java Fundamental bisa terwujud, buku panduan yang sekarang ada di tangan anda ini, Insya Allah akan membantu dalam proses belajar pemrograman Java. Materi kuliah Java Fundamental yang ada pada buku ini untuk dirancang untuk 4 SKS, diharapkan dengan mengikuti kuliah Java Fundamental ini mahasiswa dapat mengenal dan memahami bahasa pemrograman Java, serta dapat mengembangkan dan menggunakan Java sebagai bahasa alternatif untuk pengembangan teknologi informasi. Sebagaimana teknologi informasi yang terus semakin berkembang, Buku materi kuliah Java Fundamental diharapkan akan tetap relevan dengan teknologi yang ada saat ini. Kritik dan saran dari para pembaca dan pengguna buku ini sangat kami harapkan untuk membantu dalam perbaikan buku ini. Akhir kata, kami ucapkan banyak terima kasih kepada semua pihak yang telah membantu penulisan buku ini, Mudah-mudahan apa yang telah kita hasilkan ini menjadi amal baik dan ilmu yang ada dalam buku ini dapat bermanfaat bagi Mahasiswa dan tentu saja bagi perkembangan pemrograman Java di Indonesia. Wassalamualaikum Wr.Wb Jakarta, 11 Februari 2010

Sirojul Munir

LP3T NurulFikri

iv

Program Reguler & Inhouse

PHP Advance

Bab 1.1.1. Tujuan:

Merancang Website

Memahami dan mengerti perbedaan static web page dengan dynamic web page. Memahami dan mengerti apa itu web scripting atau web programming. Memahami apa itu php dan mengapa menggunakannya.

1.2. Tahapan merancang websiteDasar dari merancang / meng-organisasikan suatu web site adalah design atau rancangan yang sesuai dengan keinginan user. Tanyakan kepada user apa yang user inginkan, dan fokuskan web site yang anda ingin buat atas dasar apa yang diinginkan user. Banyak organisasi ataupun perusahaan membuat kesalahan pada web site mereka yang hanya menampilkan struktur organisasi sebagai hal yang utama dibandingkan dengan produk dan jasa yang ditawarkan atau informasi yang banyak dicari pengunjung website. Kebanyakan pengunjung website tidak akan peduli akan informasi bagaimana perusahaan anda dijalankan, tidak peduli akan informasi struktur organisasi dan manajemen perusahaan. Carilah informasi apa yang diinginkan oleh audience dengan berbicara atau wawancara dengan user atau audience web site anda. Demikian pula ketika akan membuat aplikasi, vendor (software maker) tentu akan membuat sesuai dengan keinginan client mereka. Melalui proses requirement akan didapatkan apa yang diinginkan oleh user / client. Satu hal lagi yang terpenting adalah bagaimana website anda tidak membosankan bagi user atau audience website. Buatlah seolah-olah ada hal baru yang dapat membuat audience website berlama-lama mengunjungi website anda. Pilihlah design dan warna web site yang mencitrakan audience anda. 1.2.1 Struktur website

Sebuah website dibangun untuk memberikan atau menyediakan informasi kepada audience. Informasi yang diberikan oleh suatu website haruslah terorganisasi dengan baik, sehingga audience dapat menerima atau mengolah informasi yang didapat dengan baik. Ada beberapa struktur website dalam memberikan informasi kepada audiencenya: Sequences, hierarchies 1.2.2 Sequence

Cara paling mudah mengorganisasikan informasi adalah dengan menempatkan informasi secara berurutan (sequences). Informasi diberikan secara kronologis kejadian informasi, informasi diberikan dari yang general ke spesifik, atau dengan secara alphabetic seperti dalam index, glossary, encyclopedia. Sebagai contoh user harus mengisi form pendaftaran terlebih dahulu baru bisa mengisi form transaksi.

www.nurulfikri.com 7874223 / 24

1

Program Reguler & Inhouse

PHP Advance

Gambar 1.1 Sequence Informations Website yang komplek bisa juga diorganisasikan dengan menggunakan struktur sequences, dimana setiap halaman akan mempunyai link dari halaman utama (parenthetical informations), bisa saja link menuju website yang berbeda.

Gambar 1.2 Complex Sequence Informations 1.2.3 Hierarchies

Informasi yang diberikan secara hirarki bagus digunakan untuk website yang mempunyai informasi yang komplek. Biasanya website diorganisasikan dalam satu home page, skema hirarki ini sangat cocok untuk mengorganisasikan website. Diagram pada skema hirarki biasanya digunakan pada website organisasi atau perusahaan, sehingga individu dalam organisasi itu bisa menemukan posisi masing-masing dengan cepat dan mudah dimengerti. Skema Hirarki mengharuskan kedisiplinan pada isi (content) dari web, karena skema hirarki akan bisa berjalan dengan baik pada suatu organisasi yang telah tersusun dengan baik dan benar.

Gambar 1.3 Struktur Hierarchies

1.3. Diagram WebsiteDiagram website adalah diagram yang menggambarkan organisasi dan struktur dari sebuah website, diagram website teridiri dari content (isi halaman web), navigasi, fungsi-fungsiwww.nurulfikri.com 7874223 / 24

2

Program Reguler & Inhouse interaktif website (link,form dll).

PHP Advance

Membangun website oleh sebuah tim akan mudah jika pekerjaan dibagi-bagi secara terstruktur dan diagram dari rencana pembuatan website dipahami oleh masing-masing individu dalam tim, sehingga individu dapat saling bekerja sama. 1.3.1 Struktur file dan direktori website

Pola dari direktori dan sub direktori harus menggambarkan isi utama dari masing-masing divisi yang bisa terlihat dalam diagram website :

Gambar 1.4 Konsep diagram website Diagram website akan diterjemahkan pada proses pembuatan website di server yang berupa file dan direktori. 1.3.2 Merancang Menu Website

Menu adalah alat navigasi bagi audience ketika mengunjugi suatu website, Ketika informasi yang diberikan oleh sebuah website semakin komplek, maka relasi antar halaman website harus didefinisikan dengan baik, sehingga audience tidak dibingungkan oleh link-link yang tak jelas.

Gambar 1.5 Relasi yang tak jelas antar halaman web

www.nurulfikri.com 7874223 / 24

3

Program Reguler & Inhouse

PHP Advance

Website yang efisien adalah website yang memberikan relasi antar halaman web dalam bentuk menu yang jelas, menu dirancang secara hirarki dan user yang mengunjungi halaman web tidak akan bingung manakala berada dalam halaman web, user mengerti halaman selanjutnya yang akan dikunjungi.

Gambar 1.6 Hirarki Menu Struktur menu dalam suatu website bisa terlihat berjenjang, Informasi diberikan oleh lapisan menu. Namun demikian Menu yang berjenjang sebaiknya jangan terlalu dalam, karena akan membuat frustasi user.

Gambar 1.7 Hirarki Menu yang berjenjang Content dari sebuah website dapat juga diorganisasikan lewat link dengan tambahan informasi naratif dibawah link yang akan dipilih.

www.nurulfikri.com 7874223 / 24

4

Program Reguler & Inhouse

PHP Advance

Gambar 1.8 Menu Link yang informatif

1.4. Template websiteSebelum website dibuat, web designer telah merancang tampilan website secara keseluruhan, paling tidak halaman depan. 1.4.1 Jenis tampilan template Ada beberapa macam template yang sering digunakan: 1. Template dengan menu kiri

Gambar 1.9 : Template menu di kiri

www.nurulfikri.com 7874223 / 24

5

Program Reguler & Inhouse 2. Template dengan menu kanan

PHP Advance

Gambar 1.10 : Template menu di kanan 3. Template dengan 3 kolom

Gambar 1.11 : Template 3 kolom

1.5. Membuat template sederhanaDari beberapa jenis template yang disebutkan tadi, kita dapat membuat template sederhana dengan menggunakan table HTML.1 2 3 4 5 6 7 8 9 Welcome to MyWeb Menu Kiri

www.nurulfikri.com 7874223 / 24

6

Program Reguler & Inhouse10 11 12 13 14 15 16 17 18 19 20 21

PHP Advance

Content Web Develop By [email protected]

Gambar 1.11 : Template web sederhana 1.5.1 Mock up aplikasi

Mock up aplikasi adalah tampilan statis (HTML) dari suatu aplikasi, mock up dirancang oleh web designer dari informasi yang didapatkan dari client melalui seorang project manager. Mock up hanya menggambarkan User Interface yang akan dihadapi oleh client untuk suatu proses bisnis. Mock up akan diimplementasikan oleh programmer menjadi suatu aplikasi yang dinamis (misalnya : terhubung ke database, validasi form). Sehingga jelas pembagian kerja antara programmer dan web designer, programmer tidak mengurusi masalah tampilan, tampilan adalah area kerja untuk web designer.

1. Contoh Form Mock up Buku Tamu :

www.nurulfikri.com 7874223 / 24

7

Program Reguler & Inhouse

PHP Advance

Gambar 1.12 : Mockup buku tamu Nama File : gesbuk.html1 2 .::Buku Tamu::. 3 4 5 6 Nama: 7 8 9 Email: 10 11 12 Pesan:Pesan Anda 13 14 15 Emotional Icons: 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

www.nurulfikri.com 7874223 / 24

8

Program Reguler & Inhouse 2. Mockup List Gesbuk :

PHP Advance

Gambar 1.13 : Mockup List Gesbuk Nama File : list_gestbuk.html1 List Gesbuk 2 3 4 NoNamaEmailPesanEI 5 6 1Rosalie [email protected] Assalamualaikum Adek ... 7 8 2Alissa [email protected] Walaikum salam Kakak Oca 9 10 3Rahmi [email protected] kabar Kaka Oca 11 12 4Defghi [email protected] Kaka Oca Lucu dech 13 14

1.6. Menu interaktifSebelum membuat menu, anda terlebih dahulu harus mendefinisikan menu apa yang ingin anda buat. Ada baiknya menu tidak terlalu banyak, kelompokan menu kedalam sub menu sehingga menu anda bisa menjadi lebih ramping. Dalam websitenya Jacob Nielsen (Seorang Pakar Usibility dan Web Design: www.useit.com) menyebutkan jumlah menu yang baik adalah tak lebih dari 7 menu. Berikut contoh menu : Home Product Schedule Events Guestbook Contact Us About Us

www.nurulfikri.com 7874223 / 24

9

Program Reguler & Inhouse 1.6.1 Membuat Menu

PHP Advance

Langkah pertama setelah anda mendefinisikan menu adalah buat file tujuan ketika link menu di pilih oleh user, misal (home.php untuk link Home, guest.php untuk link Menu Guestbook). Berikut kode program untuk membuat dan menampilkan link interaktif :1

dan kode program untuk menampilkan halaman pilihan user :1

Gambar 1.14 : Menu interaktif

www.nurulfikri.com 7874223 / 24

10

Program Reguler & Inhouse

PHP Advance

Bab 2.2.1. Tujuan

Variable dan Fungsi

Memahami dan mengerti perbedaan static web page dengan dynamic web page. Memahami dan mengerti apa itu web scripting atau web programming. Memahami apa itu php dan mengapa menggunakannya.

2.2. Variabel2.2.1 Mendefinisikan Variabel

Variabel dalam PHP sangat berbeda dengan bahasa pemrograman (Compiler) C dan Java. Karena dalam PHP, anda tidak perlu mendeklarasikan variabel sebelum anda menggunakannya, anda tidak perlu menentukan jenis tipe data dari variabel, karenanya tipe data dari variabel dapat berubah sesuka hati anda. Variabel dalam PHP diawali dengan tanda $, kemudian diawali dengan karakter [A-Za-z] atau _ (underscore) dan bisa mengandung karakter/numerik dan underscore. Contoh pemberian nama variabel yang benar :$nama $_Obj $B29

Contoh pemberian nama variabel yang salah :$123 $*abc

Sebagaimana disebutkan sebelumnya, anda tidak perlu mendeklarasikan variabel sebelum menggunakannya. Berikut contohnya :$PI = 3.14 $jari_jari = 5; $keliling = $PI * 2 * $jari_jari;

Dapat diperhatikan bahwa tidak ada variabel yang dideklarasikan sebelum digunakan, faktanya adalah $PI bilangan pecahan (floating point) dan $jari_jari adalah integer, variabel-variabel ini belum dideklarasikan sebagai tipe data tertentu sebelum variabel ini di inisialisasi. PHP tidak mensupport global variabel seperti bahasa pemrograman lainnya (Kecuali untuk beberapa kasus khusus pre-defined variabel, yang akan didiskusikan selanjutnya). Skup sebuah variabel adalah lokal. Jika didefinisikan dalam sebuah fungsi, maka ruang hidup variabel itu hanya dalam fungsi itu saja. Variabel yang dibuat dalam skrip utama (bukan didalam fungsi) bukanlah global variabel,www.nurulfikri.com 7874223 / 24

11

Program Reguler & Inhouse

PHP Advance

karena variabel ini tidak dikenal didalam fungsi, tapi variabel ini bisa diakses dengan menggunakan array spesial $GLOBALS[ ] . Berikut contoh penulisannya :$PI = 3.14 $jari_jari = 5; $keliling = $GLOBALS[PI] * 2 * $GLOBALS[jari_jari];

Dapat diperhatikan penggunaan $GLOBALS[ ] digunakan dalam skrip utama.

2.2.2

Indirect References Variabel

PHP menyediakan fitur dimana anda bisa meng-akses variabel dengan menggunakan indirect references. Berikut contoh penggunaan indirect references :$nama = Rosa; $$nama = Admin database; echo $Rosa ; // output yang keluar adalah

Admin database

Anda dapat menggunakan indirect references hingga beberapa level, dengan hanya menambahkan $ pada nama variabel. 2.2.3 Mengatur Variabel

Ada tiga statement (keyword) yang dapat digunakan untuk mengetahui apakah suatu variabel ada (exist), menghapus (remove) variabel, dan mencek apakah variabel benar mempunyai nilai. 1. isset() isset()digunakan untuk melihat apakah suatu variabel telah didefinisikan oleh PHP. Bernilai balik boolean true jika variabel telah di set, dan sebaliknya bernilai false jika variabel belum di set atau variabel di set NULL .1 if (isset ($proses)) 2 { 3 echo Lakukan Proses $proses; 4 }

isset() juga dapat digunakan untuk cek elemen dari suatu array atau property dari suatu object .1 2 3 4 5 6 7 8 9 if (isset($ar['nama'])) { echo Nama : . $ar['nama']; } if (isset($obj->property)) { echo Nilai Properti .$obj->property; }

www.nurulfikri.com 7874223 / 24

12

Program Reguler & Inhouse

PHP Advance

Pada baris kode diatas, kita tidak perlu mencek apakah array atau object telah di set atau belum, jika array atau object belum diset, isset() akan mengembalikan nilai false. isset( var1, var2, var3 , ... ); isset() akan mengembalikan nilai true jika semua variabel telah didefinisikan dan sebaliknya akan bernilai false jika salah satu tidak didefinisikan. 2. Unset() unset() digunakan untuk meniadakan deklarasi suatu variabel (undeclared) yang telah di deklarasikan dan mengosongkan memory yang telah digunakan untuk menyimpan nilai.1 $nama = Rosalie Naurah; 2 unset($nama); 3 if (isset($nama)) 4 { 5 echo Nama : $nama; 6 }

Skrip diatas tidak menghasilkan output, karena variabel $nama telah di unset(). unset() juga bisa digunakan untuk undeclared variabel array. 3. Empty() empty() bisa digunakan untuk menguji apakah variabel belum dideklarasikan atau bernilai false. empty() adalah Kontruksi bahasa PHP (language construct) digunakan untuk melihat apakah variabel yang dikirim melalui form mengandung data.1 if (empty($name)) 2 { 3 echo Anda lupa isi nama ...; 4 }

2.2.4

Superglobal

PHP tidak men-support variabel super global (variabel yang bisa diakses secara otomatis dari berbagai skup), namun demikian PHP menyediakan variabel internal yang bisa digunakan sebagai variabel global. Variabel ini didefinisikan oleh PHP, berikut beberapa contoh variabel superglobal : $_GET[ ] : Array dari variabel GET yang diterima oleh PHP yang dikirim oleh browser oleh client. $_POST[ ] : Array dari variabel POST yang diterima oleh PHP yang dikirim oleh browser oleh client. $_COOKIE[ ] : Array dari variabel COOKIE yang diterima oleh PHP yang dikirim oleh browser oleh client.www.nurulfikri.com 7874223 / 24

13

Program Reguler & Inhouse $_SESSION[ ] : Array dari variabel SESSION $_ENV[ ] : Array dari variabel environtment $_SERVER[ ] : Array dari variabel dari Web Server

PHP Advance

2.3. FungsiFungsi dalam PHP dapat didefinisikan oleh user (programmer) atau fungsi yang sudah ada dalam PHP (built-in). Secara umum fungsi dapat dipanggil dengan perintah berikut :nama_fungsi (arg1,arg2, ...);

Jumlah argumen pada suatu fungsi berbeda-beda, argumen dapat ekspresi yang valid.

berupa sembarang

Berikut contoh fungsi yang telah didefinisikan oleh PHP (predefine function)$panjang_string = strlen(Rosalie);

Fungsi strlen()adalah fungsi untuk yang mengembalikan nilai panjang dari suatu string, output yang dihasilkan dari baris kode diatas adalah : 7 .$panjang_string = strlen(strlen(Rosalie));

Pada baris diatas strlen(Rosalie) akan menghasilkan 7 ketika di eksekusi$panjang_string = strlen(7);

Pada baris diatas bilangan integer 7 akan di konversi ke dalam string menjadi 7, dan variabel $panjang_string adalah 1. 2.3.1 Fungsi yang didefinisikan user Bentuk umum dari fungsi yang didefinisikan user adalah :1 function nama_fungsi (arg1, arg2, arg3, ... ) 2 { 3 blok statement 4 }

Jika suatu fungsi mengembalikan nilai (return value) maka anda harus menambahkan ekpresi return dalam fungsi.

1 function tambah ($a, $b) 2 { 3 return $a + $b ;

www.nurulfikri.com 7874223 / 24

14

Program Reguler & Inhouse4 }

PHP Advance

Berikut contoh penggunaannya :echo Hasil dari 6 + 7 = .tambah(6,7);

2.4. Skup variabel dan FungsiSetiap fungsi memiliki kumpulan variabel, secara default setiap variabel yang didefinisikan diluar fungsi tidak bisa diakses dari dalam fungsi. Ketika anda mendefinisikan sebuah variabel dalam fungsi maka variabel itu hanya dikenal didalam fungsi, ketika fungsi itu dipanggil dalam skrip utama, maka nilai variabel dalam fungsi akan tetap (tidak berubah).1 2 3 4 5 6 7 function fungsiku ( ) { $var = 2; } $var = 1; fungsiku(); echo $var;

Ketika fungsi fungsiku() dipanggil, variabel $var diberi nilai 2, skup variabel $var hanya dikenal didalam fungsi dan tidak mempengaruhi variabel $var yang diinisialisasi diluar fungsi. Output yang dihasilkan dari skrip diatas adalah 1. Bagaimana jika anda ingin benar-benar mengakses / mengubah variabel diluar fungsi, sebagaimana dijelaskan sebelumnya, anda bisa menggunakan variabel array $GLOBALS[ ] yang telah disediakan PHP. Ketika baris kode ditulis ulang seperti ini.1 2 3 4 5 6 7 function fungsiku ( ) { $GLOBALS[var] = 2; } $var = 1; fungsiku(); echo $var;

Output yang dihasilkan adalah 2. Keyword global juga bisa digunakan untuk mengakses variabel global yang telah didefinisikan diluar fungsi.1 2 3 4 5 6 7 8 function fungsiku ( ) { global $var; $var= 2; } $var = 1; fungsiku(); echo $var;

www.nurulfikri.com 7874223 / 24

15

Program Reguler & Inhouse

PHP Advance

Output yang dihasilkan sama, yaitu 2. 2.4.1 Return By Value

Nilai kembalian dari suatu fungsi adalah By Value artinya, copy dari suatu nilai diciptakan (alamat dalam memory komputer juga diciptakan) dan dikembalikan oleh fungsi.1 2 3 4 5 6 7 8 9 10 function fungsi_by_value($name) { return $GLOBALS[$name]; } $num $val echo $val echo = 10; = fungsi_by_value ( "num" ); "VAL : ".$val."
"; = 20; "NUM : ".$num;

Output dari barisan kode diatas adalah :VAL : 10 NUM : 10

Dilakukan perubahan pada variabel $val sebelum dicetak, hanya mengakibatkan perubahan pada variabel $val dan tidak memberi perubahan pada variabel $num. 2.4.2 Return By References

PHP juga mensupport return By References, artinya fungsi tidak mengembalikan copy dari suatu variabel (variabel baru tidak diciptakan), tetapi mengembalikan alamat dari variabel yang tersimpan dalam memory, sehingga fungsi dapat melakukan perubahan terhadap variabel tersebut. Untuk mendefinisikan fungsi dengan nilai kembalian By References gunakan keyword & didepan nama fungsi, demikian juga ketika memanggil fungsi.1 function &fungsi_by_reference($name) 2 { 3 return $GLOBALS[$name]; 4 } 5 6 $num = 10; 7 $val =& fungsi_by_reference ( "num" ); 8 echo "VAL : ".$val."
"; 9 $val = 20; 10 echo "NUM : ".$num;

Output dari barisan kode diatas adalah :VAL : 10 NUM : 20

www.nurulfikri.com 7874223 / 24

16

Program Reguler & Inhouse

PHP Advance

Dilakukan perubahan pada variabel $val sebelum dicetak mengakibatkan perubahan pada variabel $val dan juga memberi juga perubahan pada variabel $num.

2.5. Parameter FungsiAnda bisa memberi sejumlah argumen pada sebuah fungsi. Ada dua cara memberikan nilai (argumen) pada fungsi, yang sering digunakan adalah passing by value, dan yang kedua adalah passing by references 2.5.1 Parameter By Value

Pada passing by value argumen dapat berupa ekpressi, variabel atau nilai. Pada contoh dibawah ini fungsi hitung() dipanggil dengan argumen $x diberi nilai 8 dan $y diberi nilai $a.1 2 3 4 5 6 7 function hitung ($x, $y) { return $x + $y ; } $a = 5; $_hasil = hitung(2*4, $a);

2.5.2

Parameter By References

Pada passing by References argumen harus berupa variabel. Nilai dari argumen jika terjadi proses perubahan pada fungsi akan dikenal di luar dari fungsi (dikenal diluar skup fungsi).1 2 3 4 5 6 7 function pangkat(&$n) { $n = $n * $n; } $bil = 4; pangkat($bil); echo $bil;

Tanda & memberitahukan PHP bahwa argumen yang diberikan pada fungsi adalah passing by references, nilai variabel $bil, akan berubah menjadi 16, perubahan dilakukan di dalam fungsi.

2.6. Default ParameterPHP memungkinkan untuk memberi nilai awal dari suatu parameter pada fungsi (default parameter), nilai ini akan dianggap sebagai nilai awal dari argumen jika argumen tidak diberikan pada fungsi.1 function naikkan (&$bil , $step = 1) 2 { 3 $bil = $bil + $step;

www.nurulfikri.com 7874223 / 24

17

Program Reguler & Inhouse4 5 6 7 8 9 } $bilangan = 4; naikkan ( $bilangan); naikkan ($bilangan, 3 ); echo $bilangan;

PHP Advance

Nilai dari variabel $bilangan dinaikkan menjadi 8. Pertama variabel $bilangan dinaikkan 1 pada pemanggilan pertama fungsi naikkan, pada pemanggilan kedua variabel $bilangan dinaikan 3, sekarang nilai variabel $bilangan adalah 8.

www.nurulfikri.com 7874223 / 24

18

Program Reguler & Inhouse

PHP Advance

Bab 3.3.1. Tujuan:

Object Oriented Programming

Memahami dan mengerti perbedaan static web page dengan dynamic web page. Memahami dan mengerti apa itu web scripting atau web programming. Memahami apa itu php dan mengapa menggunakannya.

3.2. Pengertian OOPDalam Pemrograman Berorientasi Object (OOP) data dan kode program di bundle dalam satu entitas, yang dikenal sebagai Object. Pada aplikasi berorientasi object terdapat beberapa object yang saling berinteraksi satu dengan yang lainnya. Object adalah suatu entitas dari masalah (problem), dimana didalamnya terdapat kumpulan properti dan method. Properti adalah object data, berupa variabel yang dimiliki object. Method adalah fungsi yang mendukung kinerja object. Class adalah template (cetak biru) dari sebuah object, didalamnya menjelaskan properti dan method yang dimiliki oleh object. Berikut contoh dari class Lingkaran. Class Lingkaran mempunyai tiga method dan satu variabel.Class : Lingkaran Method : getLuas() getKeliling() setJari($jari) Properties : jari

Diagram class Lingkaran Berikut kode dari class Lingkaran, dan dua instance dari class Lingkaran.1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Lingkaran { private $jari; function setJari( $r ) { $this->jari = $r; } function getLuas () { return 3.14 * $this->jari * $this->jari ; } function getKeliling()

www.nurulfikri.com 7874223 / 24

19

Program Reguler & Inhouse15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 { return 2 * 3.14 * $this->jari; } }; $lingkar1 = new Lingkaran(); $lingkar1->setJari( 10 ); $lingkar2 = new Lingkaran(); $lingkar2->setJari( 4 ); echo "Luas Lingkaran I ".$lingkar1->getLuas(); echo "
Luas Lingkaran II ".$lingkar2->getLuas();

PHP Advance

echo "Keliling Lingkaran I ".$lingkar1->getKeliling(); echo "
Keliling Lingkaran II ".$lingkar2->getKeliling();

3.3. Mendefinisikan ClassGunakan keyword class untuk mendefinisikan sebuah class didepan nama class, definisikan variabel (properties) dan fungsi (method) dalam class.1 class MyClass { 2 // List dari Method 3 . . . 4 // List dari Properties 5 . . . 6 }

3.4. Keyword new dan Constructor classSuatu instance dari class (Object) diciptakan dengan menggunakan keyword new. Pada contoh sebelumnya kita telah membuat class Lingkaran, $lingkar1 = new Lingkaran();. Yang terjadi ketika keyword new digunakan adalah sebuah object dialokasikan beserta dengan variabel dan method yang didefinisikan didalam class, kemudian constructor dari class dipanggil jika telah ada constructor class. Constructor adalah method dengan nama __construct() (diawali dengan dua karakterk garis bawah), method ini secara otomatis dipanggil ketika menggunakan keyword new setelah membuat sebuah object, anda bisa juga menggunakan nama constructor sama dengan nama class, namun dalam PHP5 disarankan menggunakan __construct() sesuai konvensi penamaan constructor. Dalam constructor anda bisa definisikan inisialisasi dari class seperti inisialisasi variabel. Constructor dapat juga menerima argumen namun tidak boleh ada nilai balik (return value). Kita dapat menulis ulang class Lingkaran, namun kali ini telah menggunakan constructor.1 class Lingkaran {

www.nurulfikri.com 7874223 / 24

20

Program Reguler & Inhouse2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 private $jari; function __construct( $r ) { $this->jari = $r; } function getLuas () { return 3.14 * $this->jari * $this->jari ; } function getKeliling() { return 2 * 3.14 * $this->jari; } }; $lingkar1 = new Lingkaran( 10 ); $lingkar2 = new Lingkaran( 4 ); echo "Luas Lingkaran I ".$lingkar1->getLuas(); echo "
Luas Lingkaran II ".$lingkar2->getLuas();

PHP Advance

echo "Keliling Lingkaran I ".$lingkar1->getKeliling(); echo "
Keliling Lingkaran II ".$lingkar2->getKeliling();

3.5. DestructorFungsi destructor adalah kebalikan dari constructor. Destructor dipanggil saat anda ingin menghapus sebuah object (misalnya saat tidak ada yang harus merefer ke sebuah object ). Saat yang tepat memanggil Destructor : Dalam proses eksekusi skrip, dimana diperlukan untuk menghapus sebuah object. Diakhir request. Untuk mendefinisikan fungsi Destructor, gunakan method __destruct() pada class.1 2 3 4 5 6 7 8 9 class MyClass { function __destruct() { echo "Object ini telah di hancurkan"; } } $obj = new MyClass(); $obj = NULL;

Output yang dihasilkan : Object ini telah di hancurkanwww.nurulfikri.com 7874223 / 24

21

Program Reguler & Inhouse

PHP Advance

Pada contoh, ketika object $obj = NULL, yang terjadi adalah fungsi destructor dipanggil dan object di hancurkan. Walaupun pada akhirnya object tidak di null-kan (destroy), sesungguhnya object-object akan dihancurkan pada saat akhir request.

3.6. Akses Method dan Properties dengan keyword $thisSelama proses eksekusi method-method dari object, PHP secara otomatis membuat variabel $this, variabel ini menunjuk ke object itu sendiri, dengan menggunakan variabel ini dan notasi ->, properties dan method pada object bisa diasosiakan. Sebagai contoh anda bisa mengakses variabel (properties) $jari pada object Lingkaran dengan menggunakan $this->jari, hal yang sama berlaku untuk method pada object, $this->getLuas(),jika ingin diakses dari dirinya sendiri (dalam object intu sendiri) bisa mengabaikan $this, cukup dengan getLuas() saja.

3.7. Public, protected dan private propertiesHampir semua bahasa pemrograman Object Oriented mengenal tiga keyword akses pembatasan : public, protected dan private. Ketika mendefinisikan member (method, properties) dari class, programmer harus menentukan tipe akses apa yang akan diberikan, pada PHP3 dan PHP4 semua member variabel dari class didefinisikan dengan keyword var. Pada PHP5 tidak digunakan lagi (deprecated), anda harus menggunakan keyword baru.1 class MyClass 2 { 3 public $publicMember = "Public member"; 4 protected $protectedMember = "Protected member"; 5 private $privateMember = "Private member"; 6 7 function myMethod(){ 8 // ... 9 } 10 } 11 $obj = new MyClass();

public ; member object dengan akses public dapat diakses dari dalam maupun luar object, dengan menggunakan perintah$nama_obj->member_public:

misalnya, dari luar object :$linkar1->getLuas()

dari dalam object: $this->getLuas() Jika suatu class adalah turunan dari class yang mempunyai member public, aturannya tetap sama bahwa member publik dapat diakses baik dari luar object maupun dari dalam object (dapatwww.nurulfikri.com 7874223 / 24

22

Program Reguler & Inhouse diakses oleh class turunannya).

PHP Advance

protected ; member object dengan akses protected hanya dapat diakses dari dalam object. Jika suatu class adalah turunan dari class yang mempunyai member protected, aturannya tetap sama bahwa member protected hanya dapat diakses dari dalam object (dapat diakses oleh class turunannya dengan keyword $this ). private ; member object dengan akses private sama dengan member protected, yaitu hanya bisa diakses dari dalam object. Namun variabel private tidak dapat diakses oleh class turunannya. Jika dalam class turunan di deklarasikan member private dengan nama yang sama dengan parentnya, maka member private itu hanya dikenal di masingmasing class saja (tidak terhubung).1 class DBKoneksi { 2 public $hasil_query ; 3 protected $dsn = array ("localhost",root,,latihan); 4 private $koneksi ; 5 6 // ... 7 } 8 9 class NFDbConnection extends MyDbConnection { 10 protected $dsn = array ("nurulfikri.com,admin,4dm1n,lp3t); 11 }

Pada contoh diatas, dapat disimpulkan : Penanganan koneksi ( variabel $koneksi) database adalah member private, karena digunakan hanya untuk internal class, dan tidak dapat diakses oleh pengguna class ini. Database Source Name ( variabel $dsn ) tidak bisa diakses oleh pengguna class. Database hostname dapat diubah dengan membuat class turunannya dengan meng-override (mendefinisikan ulang ) variabel $dsn Hasil dari query (variabel $hasil_query) harus bisa diakses oleh user, karenanya $hasil_query adalah member public.

3.8. public, protected dan private MethodAkses method object mempunyai aturan yang sama dengan akses variabel object (properties object). public ; method public dapat dipanggil dalam sembarang skup. protected ; method protected hanya bisa diakses dalam internal class dan class turunannya. private ; method private hanya bisa diakses dalam internal class, dan tidak dapat diakses oleh class turunannya. Sama seperti variabel object, class turunan dapat mendefinisikan ulang method private dari parent classnya.www.nurulfikri.com 7874223 / 24

23

Program Reguler & Inhouse Berikut contoh class DBKoneksi

PHP Advance

1

3.9. Static Properties ( Variabel Static )Properties ( variabel ) dideklarasikan dalam class. Setiap instance dari class (object) mempunyai copy dari properties-properties ini. Class juga dapat mempunyai properties static (static variables ), tidak seperti properties lainnya, static properties adalah milik dari class dan bukan milik dari instance dari class (object itu sendiri), karenanya properties ini sering disebut sebagai class properties, lawan dari instance properties (object properties). Properties static didefinisikan dengan keyword static.

www.nurulfikri.com 7874223 / 24

24

Program Reguler & Inhouse1 class MyClass { 2 static $static_variabel; 3 static $counter = 0; 4 }

PHP Advance

Berikut contoh untuk mengakses variabel static :MyClass::$counter++; print MyClass::$counter;

Contoh diatas akan mencetak angka 1. Jika variabel static diakses didalam class yang mendeklarasikan variabel static gunakan keyword self sebagai yang mewakili nama class.1

Akan dicetak angka 1. Berikut contoh program bagaimana mencetak unik id, ketika suatu instance class (object) diciptakan.15

Akan dicetak : Sudah Ada 2 Gesbuk 1)Rosalie : Ayah Oca nih 2)Alissa : Kakak Nakal yah.

3.10.

Static Method

Sama seperti properties, PHP juga men-support method static. Method static adalah milik dari class, bukan milik dari instance class, karenanya keyword $this tidak bisa digunakan untuk mengakses method static dalam class, gunakan keyword self untuk mengakses method static, self::method(). Gunakan nama_class::method() untuk mengakses method static dari luar class.1

3.11.

Konstanta Pada Class

www.nurulfikri.com 7874223 / 24

26

Program Reguler & Inhouse

PHP Advance

Pada PHP3 dan PHP4 ketika mendefinisikan suatu konstanta haruslah menggunakan keyword define(), dan anda tidak bisa mendefinisikan konstanta dalam class. Pada PHP5 dimungkinkan untuk mendeklarasikan konstanta di dalam class. Gunakan keyword self untuk mengakses konstanta dari dalam class, dan gunakan nama class kemudian nama konstanta class ketika mengakses konstanta dari luar class (nama_class::konstanta).1

Tips : Selalu gunakan hurup besar untuk konstanta .

3.12.

Polymorphism

Dengan menggunakan class dan konsep turunan dalam OOP akan memudahkan untuk memodelkan masalah dunia nyata menjadi sebuah kumpulan fungsionalitas data yang saling berhubungan. OOP juga memudahkan dalam pembagunan aplikasi yang besar, dengan memanfaatkan kode program yang sudah dibuat melalui konsep turunan (inheritance). Perhatikan kode program dibawah ini :1

Output yang dihasilkan adalah : SEGI TIGA : Alas 4, Tinggi : 7 ,Luas : 14 BUJUR SANGKAR : Panjang Sisi 4 ,Luas : 16 Dapat diperhatikan bahwa kode program diatas akan berkembang terus, jika kita inginwww.nurulfikri.com 7874223 / 24

28

Program Reguler & Inhouse

PHP Advance

menambah beberapa jenis bidangmenyebabkan penambahan blok if pada fungsi hitungLuas() dan tiap kali harus mengecek apakah object adalah instance dari bentuk bidang yang ditambahkan. Masalah diatas bisa diatasi dengan konsep polymorphism yang memanfaatkan turunan (inheritance). Dengan inheritance method dan properties yang dimiliki parent akan bisa diakses oleh child-nya. Dari contoh diatas kita bisa membuat class parent dari class SegiTiga dan class BujurSangkar yaitu class Bentuk. Gunakan keyword extends untuk membuat suatu class adalah turunan dari parent-nya.1 class child extends Parent { 2 --3 }

Berikut kode program sebelumnya ditulis ulang :1

Output yang dihasilkan sama yaitu : SEGI TIGA : Alas 4, Tinggi : 7 ,Luas : 14 BUJUR SANGKAR : Panjang Sisi 4 ,Luas : 16 Dapat diperhatikan dengan penggunaan konsep OOP yaitu inheritance, berapa banyakpun class bentuk bidang yang dibuat tidak akan mengubah fungsi dari hitungLuas(), karena perintah instanceof akan mengecek pada parent class Bentuk tersebut. Pada class Bentuk terdapat method getLuas() dan info(), yang masih abstract, dan turunan dari class Bentuk ini harus mendefinisikan sendiri method getLuas() dan method info(). Pada PHP tidak mengenal multi-inheritance seperti C++, jadi suatu class hanya bisa diturunkan dari satu parent class.

www.nurulfikri.com 7874223 / 24

30

Program Reguler & Inhouse

PHP Advance

3.13.

parent:: dan self::

PHP mengenal dua keyword untuk me-refer ke sebuah nama class, sehingga memudahkan dalam mengimplementasikan OOP. self:: merefer ke sebuah class saat ini (current class) biasanya untuk mengakses variabel static, method static dan konstanta. parent:: digunakan untuk merefer ke parent class, dan biasanya digunakan untuk memanggil konstruktor dan method dari parent class, dan bisa juga digunakan untuk mengakses member atau konstanta. Berikut contoh program penggunaan parent:: dan self:: .1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 class TextBox { const TIPE = "text"; private $nama; private $val; function __construct($nama,$val) { $this->nama = $nama; $this->val = $val; } function show() { echo ''; } } class TextBoxSize extends TextBox { const TIPE = "text"; private $size ; function __construct($name,$val,$size) { parent::__construct($name,$val); $this->size=$size; } function show() { echo ''; } } $nama = new TextBox("nama",""); $umur = new TextBoxSize("umur","",8); echo "Nama : "; $nama->show(); echo "
Umur : "; $umur->show(); ?>

www.nurulfikri.com 7874223 / 24

31

Program Reguler & Inhouse

PHP Advance

3.14.

Operator instanceof

Operator instanceof digunakan untuk menggantikan fungsi built-in is_a() (sekarang disarankan tidak dipakai lagi / deprecated ). Operator instanceof adalah operator operasi logika binary, yang digunakan untuk menguji apakah suatu variabel (object) adalah instance dari suatu class.1

Program ini akan menampilkan output : BujurSangkar Adalah bentuk 2 Dimensi __class__ adalah konstanta spesial yang merefer ke nama class. Sebagaimana disebutkan sebelumnya operator instanceof adalah operator logika binary yang dapat dipadukan dengan operator negasi ( ! ).1

www.nurulfikri.com 7874223 / 24

32

Program Reguler & Inhouse

PHP Advance

3.15.

Method Abstract dan Class

Ketika mendesain hirarki suatu class, anda pasti ingin menggunakan method pada parent yang akan diimplementasikan oleh child (turunannya). Gunakan keyword abstract didepan keyword class pada saat deklarasi class, setiap method abstract harus dideklarasikan dengan keyword abstract. Dalam abstract class dapat juga didefinisikan method bukan abstract dan variabel.1 abstract class nama_class 2 { 3 abstract function nama_method(); 4 5 function nama_method_non_abstract(){ 6 // implemntasi method non abstract; 7 } 8 }

Gambar 3.1 Hirarki object Bentuk Berikut implementasi dari diagram class Bentuk:1

www.nurulfikri.com 7874223 / 24

34

Program Reguler & Inhouse

PHP Advance

3.16.

Interfaces

Interfaces adalah spesifikasi umum yang dimiliki oleh sebuah object, dengan adanya interfaces programmer bisa menghubungkan antara class (parent class) yang mempunyai ciri khas yang berbeda misalnya, parent class atau parent Bentuk2D : yang akan mempunyai turunan bentuk-bentuk benda dua dimensi. Contoh lain parent class Produk yang akan mempunyai turunan nama produk yang bisa dijual,kedua parent class akan bisa disatukan dengan cara class atau parent class mengimplementasi suatu interfaces yang sama. Interfaces dideklarasikan dengan menggunakan keyword interface diawal nama interface.1 interface nama_interface 2 { 3 function nama_fungsi(); 4 }

sebuah class akan mengimplementasi suatu interfaces dengan menggunakan keyword implements setelah nama class, kemudian diikuti dengan nama interfaces yang telah didefinisikan .1 class nama_class implements nama_interface_1, nama_interface_2 . 2 { 3 ... 4 } . .

Seperti bahasa pemrograman Java, PHP hanya mengenal konsep single inheretance, namun melalui interfaces ini PHP bisa menggunakan konsep multiple inheritance milik dari C+ +, artinya suatu class bisa mengimplementasikan banyak interfaces.

1 showObject($bjr); echo "
"; showObject($telor);

PHP Advance

Output yang dihasilkan : BujurSangkar Luas 49 dan Keliling 28 Produk : Telor Asin Brebes Harga : 7500 Per-Lusin

3.17.

final Method

Suatu method akan tidak bisa di override atau tidak bisa didefinisikan ulang lagi oleh turunannya jika method tersebut adalah method final.1

Skrip program ini tidak akan berjalan karena method dari idGenerator() adalah final, karenanya class Mobil turunan dari class Produk tidak boleh mendefinisikan ulang method idGenerator().

3.18.

final Class

Sama seperti final method, suatu class jika dideklarasikan sebagai class final maka class tersebut tidak boleh di extends (tidak boleh menjadi parent) oleh class lain.1 2 3 4 5 6 final class SmartForm { /// } class VerySmartForm extends SmartForm

www.nurulfikri.com 7874223 / 24

37

Program Reguler & Inhouse7 { 8 9 }

PHP Advance

///

Skrip program ini tidak akan berjalan karena class SmartForm adalah class final, karenanya tidak boleh diextends oleh class VerySmartForm.

3.19.

Method __toString( )

PHP menggunakan method __toString() untuk mengimplementasikan dalam mencetak string informasi yang merepresentasikan sebuah object.1

Output program ini akan menampilkan : 08032003 : Rosalie Naurah Husna

www.nurulfikri.com 7874223 / 24

38

Program Reguler & Inhouse

PHP Advance

Bab 4.4.1. Tujuan:

Pustaka Database PDO

Mengerti penggunaan pustaka PDO Mampu membuat program yang terkoneksi ke database MySQL

4.2. Lapisan Abstraksi DatabasePustaka atau Library adalah kumpulan kode program yang berisi kumpulan Class atau Fungsi yang digunakan untuk tujuan spesifik dan dapat membantu dalam proses pengembangan sebuah aplikasi program. Pustaka PHP yang tersedia di internet diantaranya adalah Pustaka untuk mengakses database (DBMS). Pustaka Abstraksi Database digunakan sebagai lapisan yang menjembatani berbagai macam vendor DBMS - MySQL, PostgreSQL, Oracle, SyBase, Informix, SQL Server, SQLLite, Access, FoxPro, ODBC dengan bahasa pemrograman PHP. Dengan adanya lapisan ini diharapkan programmer dapat mengakses banyak vendor database ( berpindah-pindah jenis DBMS) dengan sedikit pengubahan kode program.

Gambar 9.1 : Lapisan Pustaka Abstraksi Database

www.nurulfikri.com 7874223 / 24

39

Program Reguler & Inhouse

PHP Advance

4.3. PDO : Portable Data ObjectsPDO atau PHP Data Objects adalah sebuah ekstensi PHP5 berupa Library / Pustaka untuk koneksi ke Database (DBMS). PDO menyediakan lapisan akses database, untuk bermacam-macam database, Anda akan menggunakan fungsi-fungsi yang sama dalam melakukan eksekusi perintah SQL ( query ) atau mengambil data ( fetch data ) . PDO telah men-support beberapa Driver untuk beberapa Database, seperti 1. PDO_DBLIB, support database FreeTDS / Microsoft SQL Server / Sybase 2. PDO_FIREBIRD , Firebird/Interbase 6 3. PDO_IBM , IBM DB2 4. PDO_INFORMIX , IBM Informix Dynamic Server 5. PDO_MYSQL , MySQL 3.x/4.x/5.x 6. PDO_OCI , Oracle Call Interface 7. PDO_ODBC , ODBC v3 (IBM DB2, unixODBC and win32 ODBC) 8. PDO_PGSQL , PostgreSQL 9. PDO_SQLITE , SQLite 3 and SQLite 2

4.4. Koneksi ke databaseDalam koneksi ke database server ada beberapa variabel yang harus didefinisikan : 1. Nama Server database : misal localhost untuk komputer local atau nomor IP server 2. Nama User : nama user pemilik basis data, misal rosa 3. Password User , misal passwordnya juga passrosa 4. Nama Basis Datanya , misal dbkoperasi 4.4.1 Koneksi ke database MySQL Berikut contoh kode program PHP akses database MySQL :1

Object $dbh adalah object koneksi ke database dari Class PDO, dengan argumen : 1. lokasi server database MySQL dan basis data atau ditambah port dari server databasenya 2. nama user pemilik basis data 3. nama password dari user pemilik basis data

www.nurulfikri.com 7874223 / 24

40

Program Reguler & Inhouse 4.4.2 Koneksi ke database PostgreSQL Berikut contoh koneksi kedatabase PostgreSQL

PHP Advance

1

Jika server database berjalan pada port yang berbeda dari port default PostgreSQL ( 5432), maka pada argumen pertama ditambah variabel port, berikut contoh koneksi ke server PostgreSQL yang berjalan di port 5555.

1

4.4.3

Koneksi melalui ODBC

Berikut contoh koneksi ke database Ms.Access dengan ODBC, File Ms.Access berada dalam direktori C:\dbkoperasi.mdb1

4.4.4

Menangkap eksepsi kesalahan

Kesalahan bisa terjadi pada saat melakukan koneksi ke database ataupun pada saat eksekusi sebuah query. Pada pustaka PDO, class PDO akan melempar sebuah eksepsi kesalahan bernama PDOException, eksepsi ini harus ditangkap untuk mengetahu jenis kesalahan yang terjadi. Berikut kode lengkapnya untuk menangkap eksepsi dari Class PDOException.

1

PHP Advance

Agar kesalahan dari perintah SQL dapat ditangkap dan hal ini akan membantu dalam proses debugging / pembetulan program, maka dari object $dbh harus di seting atribut jenis mode error yang akan ditampilkan, berikut setingannya:$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

4.5. Fungsi-Fungsi pada PDO4.5.1 Fungsi exec( )

Fungsi ini digunakan untuk eksekusi perintah SQL, jika perintah SQL sukses dilakukan akan mengembalikan nilai 0. Contoh penggunaan fungsi exec()1

Eksekusi file ini, maka seharusnya dalam database MySQL pada basis data dbkoperasi telah tercipta table produk dan telah ter-insert satu data produk.www.nurulfikri.com 7874223 / 24

42

Program Reguler & Inhouse Berikut perintah SQL yang di eksekusi di konsole MySQL :mysql> select * from produk; +----------+-------+---------+--------+------+ | idproduk | kode | nama | harga | stok | +----------+-------+---------+--------+------+ | 1 | DVD01 | DVD R/W | 237000 | 20 | +----------+-------+---------+--------+------+ 1 row in set (0.00 sec)

PHP Advance

4.5.2

Fungsi query()

Fungsi query digunakan untuk eksekusi SQL dan mengembalikan hasil Query berupa ResultSet ( kumpulan baris data / record ). Berikut contoh penggunaan fungsi query()1

Gunakan sintaks foreach untuk menampilkan hasil query pada ResultSet. 4.5.3 Fungsi execute()

Fungsi execute() digunakan untuk eksekusi prepared statement ( statement yang telah didefinisikan dengan perintah SQL ). Berikut contoh penggunaannya1