Welcome to my Website

Belajar PHP di Linux

II. Mengenal PHP
PHP adalah bahasa pemrograman script yang dinamis. Program PHP dapat dijalankan sebagai
aplikasi web yang memerlukan web server dan dapat juga dijalankan menggunakan interpreter
PHP, sebagai aplikasi konsol atau desktop­based.
PHP adalah bahasa pemrograman yang kaya dengan library untuk pengembangan aplikasi
mulai dari dukungan ke berbagai database management system, dukungan library Graphical
User Interface, sampai library untuk sistem administrasi.
1.Menginstal PHP
PHP diinstal sebagai module apache dan sekaligus menginstal PHP CLI (command line
interpreter), nama­nama direktori (misal: /dir/instalasi/xxx/anda) dapat anda ubah
sesuai dengan keinginan anda.
Karenanya harus menginstal apache terlebih dahulu jika apache belum terinstal.
Berikut ini cara instalasi PHP 5 dari source code.

1.1.Instalasi Apache
1. Instal Apache, pertama download dari httpd.apache.org, dalam hal ini kami
menggunakan apache 1.3.37
2. Uncompress disembarang direktori
bash% tar zxvf apache_1.3.37.tar.gz
3. Konfigurasi dan kompilasi
bash% cd apache_1 .3.3 7
bash% ./configure –prefix=/di r/ in stal as i/ ap ach e/ and a ­­
enable­shared=max
bash% make
4. Instal
bash% make install
5. Instalasi apache selesai

1.2.Instalasi module PHP dan PHP CLI:
1. Download dari situs www.php.net
2. Uncompress di sembarang direktori
bash% tar zxvf php­5.2.0.tar. gz
3. Konfigurasi dan kompilasi

2.Menjalankan Program PHP
Program PHP dapat dijalankan dengan 2 modus:

2.1.Aplikasi Konsol
Buat program salam.php berikut ini disebarang direktori:
echo “assalamu'alaikum, Brother \n”;
?>
Pastikan PHP CLI ada di PATH dengan perintah:
bash% export PATH=/dir/instalasi/php/anda/bin : $PATH
Jalankan program dengan perintah php
bash% php salam.php

2.2.Aplikasi web
Agar dapat dieksekusi melalui aplikasi web maka anda perlu menyalin (copy) salam.php ke
document root dari server apache anda:
bash% cp salam.php /dir/instalasi/apache/anda/htdocs/
Lalu akses URL ini dengan web browser pilihan anda:
http://localhost/salam.php

3.Bahasa PHP
Bagian ini membahas PHP sebagai bahasa pemrograman umum (general purpose), contoh­-contoh dijalankan menggunakan PHP CLI (Command Line Interface). Pada bagian Aplikasi Web dibahas PHP sebagai bahasa pemrograman web, contoh­-contoh dijalankan menggunakan server web, keluaran ditampilkan menggunakan klien web.

3.1.Program PHP
File program PHP adalah file teks yang dapat dibuat dengan editor teks biasa (misal: vim,
gedit, kedit).
Sebuah file program PHP paling sedikit terdiri atas satu baris statemen yang dibatasi oleh tag pembuka blok statemen dan tag penutup blok statemen. Tag pembuka blok adalah . PHP mengenal 3 jenis tag pembuka lainnya yang tidak direkomendasikan pada manual PHP, dan karenanya tidak dibahas disini.Sebuah program PHP dapat terdiri 2 jenis statemen:
* statemen PHP yang dibatasi oleh tag tersebut
* statemen non­PHP (misal: HTML, WML, XML)
Kedua jenis statemen dapat berselang­-seling lebih dari satu kali dalam program. PHP mengabaikan whitespace (spasi, tab, baris­baru) sebelum dan sesudah statemen, juga whitespace di antara token­token dalam statemen. Semua contoh program dalam tulisan ini tidak menuliskan tag pembuka untuk menghemat ruang/kertas, kecuali jika ada bagian program yang menggunakan statemen non­PHP.

3.2.Komentar
PHP Mengenal 3 jenis komentar:
1. Diawali dengan // , berlaku hanya untuk 1 baris
2. Diawali dengan #, berlaku hanya untuk 1 baris
3. Diawali dengan /* dan diakhiri */ , berlaku untuk lebih dari 1 baris, dapat juga digunakan untuk menyisipkan komentar diantara token.
Ketiga jenis komentar dapat berada pada baris tersendiri atau dibelakang statement. Contoh:
// komentar 1
echo 'string satu',"\n"; // komentar 2
echo 'string dua',"\n"; # komentar 3
/*
komentar 4 , komentar ini
melintas beberapa baris
*/
echo /* komentar 5, di antara token */ 'string tiga',"\n";

3.3.Tipe Data
PHP membedakan operasi yang dapat dilakukan terhadap setiap tipe data.

3.3.1.Tipe Primitif
Tipe primitif adalah tipe data dasar yang tidak dapat dibagi lagi (decompose) atas tipe data yang lebih dasar lainnya.

3.3.1.1.Boolean
PHP mengenal tipe boolean yaitu : TRUE dan FALSE, keduanya case­insenstive. Jadi True, true, atau TRUE adalah sama.

3.3.1.2.Integer
Integer atau bilangan bulat di PHP tidak membedakan panjang byte (long atau integer biasa), keduanya adalah integer. Integer literal dapat dituliskan sebagai desimal (default, tanpa prefiks), octal (dengan prefix
'0') atau hexadecimal (dengan prefix 0x).
Contoh:
1234567 890 # desimal
01234567 # octal
0x1234567 89abcdef #hexadecimal
3.3.1.3.float
Literal float menggunakan '.' untuk pembatas pecahan desimal, dan menggunakan simbol e untuk pangkat desimal.
Pada contoh berikut ini ke 4 bilangan yang ditulis dengan cara berbeda adalah sama besarnya:
.
1234567 89
0.1234567 89
1234567 89e­9
123.4567 89e­4
3.3.1.4.string
String dalam PHP adalah dereten karakter.
Literal string dapat ditulis dengan 3 cara :
3.3.1.4.1.Petik ganda
String dengan petik ganda mengenal karakter khusus (baris baru, tab) dan melakukan ekspansi variabel

3.3.1.4.2.Petik Tunggal
String dengan petik tunggal tidak mengenal karakter khusus (baris baru, tab) dan tidak melakukan ekspansi variabel

3.3.1.4.3.Heredoc
Sintak heredoc memperlakukan string seperti double quote, hanya saja menggunakan delimiter yang berbeda, yaitu deretan karakter alpahanumeric atau garis bawah, yang dimulai hanya dengan karakter non digit atau garis bawah. Contoh:
<<'aplikasi web',
'python' =>'aplikasi desktop',
'perl' =>'otomatisasi sysadmin',
'c' => 'aplikasi system',
'ruby' => 'aplikasi web',
'java' => 'aplikasi enter prise'
);
echo 'php tepat untuk ' , $a['php'],"\n";
echo 'python cocok untuk ' , $a['python'],"\n";
Array ber­indeks integer juga dapat dibuat dengan constructor array yang sama:
$b = array('php','python','perl','c','ruby','java');
echo $b[0], ”\n” # php
echo $b[1], ”\n” # python
echo $b[4], ”\n” # ruby
3.3.2.2.Objek
Tipe data ini menyimpan referensi ke instance class. Tipe data objek dibuat menggunakan constructor class. Pembahasan selengkapnya ada di bagian Class.

3.3.3.Tipe Khusus
3.3.3.1.Resource
Resource adalah tipe khusus yang menyimpan referensi ke resource eksternal.

3.3.3.2.NULL
Menyatakan ketiadaan nilai, tipe data ini hanya memiliki satu nilai: NULL

3.3.4.Konversi ke boolean
PHP melakukan konversi dari tipe data lain ke boolean dalam konteks yang memerlukan tipe
boolean berdasarkan aturan yang jelas.
Salah satu konteks yang memerlukan tipe boolean adalah statemen kondisional (misal: if).
Semua nilai berikut ini akan dianggap FALSE oleh PHP:
● boolean FALSE
● integer 0 (nol)
● float 0.0 (zero)
● string kosong, dan string "0"
● array yang tidak mempunyai elemen.
● object yang tidak mempuyai variabel member (PHP4)
● tipe khusus NULL
● semua variabel yang di­unset

3.4.Variabel
Variabel digunakan untuk menyimpan data, selanjutnya data dimanipulasi melalui variabel.
3.4.1.Assignment
Variabel diberi nilai (= data) melalui assignment.
Variabel tidak perlu dideklarasikan sebelum diberi nilai.
$a = 1 000;
$b = 'ini adalah string';
$c = “string ini bergabung dengan '$b' “;
Jika ekspresi mengacu ke variabel yang belum didefinisikan tidak menyebabkan error. echo $a, $b, $c, “\n”;
Assignment ke variabel dapat menghasilkan data baru (dengan nilai yang sama), atau tidak menghasilkan data baru tapi hanya menghasilkan referensi baru.
$a = 1234;
$b = $a; # $b berisi sama dengan a
Pada PHP 5, assignment dari variabel (yang di­assign ke) objek ke variabel lain, tidak
menyebabkan adanya data baru, tapi hanya menghasilkan referensi baru.
1 /* REQUIRE PHP 5 */
.
2. class Koordinat
3. {
4. function Koordinat($x, $y) {
5. $this­>X = $x;
6. $this­>Y = $y ;
. }
7
8. }
9. $k1 = new Koordinat(5,5);
10.$k2 = $k1;
1. $k2­>X += 222; # X di $k2 diubah = 22
1 7
12.echo $k1­>X ,"\n"; # X $k1 juga berubah = 22 7
Untuk mendapatkan hasil yang sama di PHP 4, perlu menggunakan reference assignment =&,
baris 10 ditulis sbb:
$k2 =& $k1;
Reference assignment =&, juga dapat digunakan untuk variabel primitif:
$x = 200;
$y =& $x;
$y += 300;
echo $x , ”\n”; # 500

3.5.Ekspresi dan Operator
Ekspresi adalah segala sesuatu yang memiliki nilai.
Ekspresi meliputi nilai literal, pemanggilan fungsi yang mengembalikan nilai, hasil operasi, termasuk assignment. Assignment dalam PHP memiliki nilai dan adalah ekspresi juga. Hal ini dapat menjadi sumber error yang tidak mudah ditemukan, ketika yang ingin dilakukan adalah uji kesamaan
(equality ==) :
# program berikut ini contoh penggunaan ekspresi yang SALAH
$a = 123;
if ($a = 1 0) { # selalu TRUE, seharusnya $a == 1
00 000
echo “$a sama dengan 1 000\n”;
}
$b = 0;
if ($b = 0 ) { # selalu FALSE seharusnya $b == 0
echo “$b sama dengan 0\n”;
}
Pada bagian berikutnya dibahas berbagai operator, setiap penjelasan langsung menggunakan contoh.

3.5.1.Operator aritmetika
Berlaku untuk tipe data bilangan.
penjumlahan, perkalian, pembagian, pengurangan, modulus.
$a = 10; $b = 20;
$c = $a + $b; // penjumlahan , hasil 30
$c = $a ­ $b; // pengurangan , hasil ­10
$c = $a * $b; // perkalian , hasil 200
$c = $a / $b; // pembagian , hasil 0.5
$c = $a % $b; // modulus, hasil 10

3.5.2.Operator incrementing/decrementing
Menambah atau mengurangi bilangan dengan 1, terdiri atas:
post­increment, pre­increment, post­decrement, pre­decrement.
$a = 10;
$b = $a++; // post­increment
echo "b == $b , a == $a \n"; // b == 1 0 , a == 11
$b = ++$a; // pre­increment
echo "b == $b , a == $a \n"; // b == 12 , a == 12
$b = $a­­; // post­decrement
echo "b == $b , a == $a \n"; // b == 12 , a == 11
$b = ­­$a; // pre­decrement
echo "b == $b , a == $a \n"; // b == 1 0 , a == 10

3.5.3.Operator assignment
Assignment menghasilkan nilai baru sesuai nilai expresi disebelah kanan operator =.
$a = 10;
$c = ($b = 10) + $a; // $c == 20, $b == 10
$a += 10; // $a == 20
$c = ($b += 10) + $a; // $c == 40, $b == 20, $c == 20

3.5.4.Operator Perbandingan
Membandingkan antara 2 nilai. Berikut ini operasi dan contohnya:
3.5.4.1.Ternary
ekspresi1 ? ekspresi2 : ekspresi3
Operator '?' ini mengembalikan nilai ekspresi2 jika ekspresi1 bernilai TRUE dan
mengembalikan nilai ekspresi3 jika ekspresi1 bernilai FALSE.
// ternary
$hasil = true ? 'benar':'salah';
echo $hasil , "\n"; // benar
$hasil = false ? 'benar':'salah';
echo $hasil , "\n"; // salah

3.5.4.2.Equal
ekspresi1 == ekspresi2
Operator '==' ini hanya menghasilkan nilai TRUE jika nilai ekspresi1 samadengan nilai
ekspresi2, jika tipe data kedua ekspresi berbeda maka sebelum operasi dijalankan ekspresi2
dikonversikan tipe datanya ke tipe data ekspresi1.
// equal
$a = 10; $b = '10';
echo $a == $b ? 'true':'false' , "\n"; // true

3.5.4.3.Identical
ekspresi1 === ekspresi2
Operator '===' ini hanya menghasilkan nilai TRUE jika nilai ekspresi1 samadengan nilai
ekspresi2 dan tipe data kedua nilai ekspresi sama.
// identical
$a = 10; $b = '10'; $c = 10;
echo $a === $b ? 'true':'false' , "\n"; // false
echo $a === $c ? 'true':'false' , "\n"; // true

3.5.4.4.Not Equal
ekspresi1 != ekspresi2
ekspresi1 <> ekspresi2
Operator '!=' dan '<>' ini hanya menghasilkan nilai TRUE jika nilai ekspresi1 tidak
samadengan nilai ekspresi2, jika tipe data kedua ekspresi berbeda maka sebelum operasi
dijalankan ekspresi2 dikonversikan tipe datanya ke tipe data ekspresi1.
// not eq ual
$a = 10; $b = '1 0'; $c =11;
echo $a != $b ? 'true':'false' , "\n"; // false
echo $a != $c ? 'true':'false' , "\n"; // true
// not eq ual
$a = 1 0; $b = '10'; $c =11;
echo $a <> $b ? 'true':'false' , "\n"; // false
echo $a <> $c ? 'true':'false' , "\n"; // true

3.5.4.5.Not Identical
ekspresi1 !== ekspresi2
Operator '!==' hanya menghasilkan nilai TRUE jika nilai ekspresi1 tidak samadengan nilai
ekspresi2 dan tipe data kedua nilai ekspresi sama.
// not identical
$a = 10; $b = '10'; $c = 10;
echo $a !== $b ? 'true':'false' , "\n"; // true
echo $a !== $c ? 'true':'false' , "\n"; // false
Operator greater than(>), smaller than(<), greater equals(>=), smaller equals (<=)
ekspresi1 > ekspresi2
ekspresi1 < ekspresi2
ekspresi1 <= ekspresi2
ekspresi1 >= ekspresi2
Keempat operator ini membandingkan nilai ekspresi1 dan ekspresi2, operasi baru dijalankan
setelah melakukan konversi tipe jika ekspresi2 berbeda tipedata dengan ekspresi1
$a = 1 0; $b = 1 1; $c = 1 0;
echo $a > $b ? 'true':'false' ,"\n"; // false
echo $a < $b ? 'true':'false' ,"\n"; // true
echo $a <= $c ? 'true':'false' ,"\n"; // true
echo $a >= $c ? 'true':'false' ,"\n"; // true

3.5.5.Operator Logika
3.5.5.1.Logical AND
ekspresi1 and ekspresi2
Menghasilkan nilai TRUE jika ekspresi1 dan ekspresi2 keduanya bernilai TRUE.
//and
echo (true and true)?'true':'false',"\n"; // TRUE
echo (true and false)?'true':'false',"\n"; // FALSE
echo (false and false)?'true':'false',"\n"; // FALSE

3.5.5.2.Logical OR
ekspresi1 or ekspresi2
Operator OR menghasilkan nilai TRUE jika ada salah satu dari ekspresi1 dan ekspresi2 bernilai TRUE.
// or
echo (true or true)?'true':'false',"\n"; // TRUE
echo (true or false)?'true':'false',"\n"; // TRUE
echo (false or false)?'true':'false',"\n"; // FALSE

3.5.5.3.Logical XOR
ekspresi1 xor ekspresi2
Operator XOR menghasilkan nilai TRUE jika salah satu dari ekspresi1 dan ekspresi2 bernilai TRUE, tapi tidak kedua­-duanya.
// xor
echo (true xor true)?'true':'false',"\n"; // FALSE
echo (true xor false)?'true':'false',"\n"; // TRUE
echo (false xor false)?'true':'false',"\n"; // FALSE

3.5.5.4.Logical NOT
! ekspresi1
Operator NOT menghasilkan nilai TRUE jika ekspresi1 bernilai FALSE, dan menghasilkan nilai FALSE jika ekspresi1 bernilai TRUE.

3.5.5.5.Logical AND (&&)
Samadengan operator AND sebelumnya tapi precedence nya lebih tinggi, // &&
echo (true && true)?'true':'false',"\n"; // TRUE
echo (true && false)?'true':'false',"\n"; // FALSE
echo (false && false)?'true':'false',"\n"; // FALSE
3.5.5.6.Logical OR (||)
Samadengan operator OR sebelumnya tapi precedence nya lebih tinggi.
// ||
echo (true || true)?'true':'false',"\n"; // TRUE
echo (true || false)?'true':'false',"\n"; // TRUE
echo (false || false)?'true':'false',"\n"; // FALSE
Operatir || lebih tinggi precedencenya dari or
echo (true xor false || true) ? 'true':'false',"\n"; // FALSE
echo (true xor false or true) ? 'true':'false',"\n"; // TRUE
PHP melakukan optimasi pada ekspresi yang menggunakan operator logika. Contoh: ekspresi1 && ekspresi2 && ekspresi3
Pada ekspresi tersebut jika ekspresi1 bernilai FALSE maka ekspresi2 dan ekspresi3 tidak akan dieksekusi. Begitu juga pada contoh berikut:
ekspresi1 || ekspresi2 || ekspresi3
Pada ekspresi tersebut jika ekspresi1 bernilai TRUE maka ekspresi2 dan ekspresi3 tidak akan dieksekusi.

3.5.6.Operator bit
Operator ini berlaku untuk integer dan karakter ASCII.
3.5.6.1.Bitwise AND
b1 & b2
Menghasilkan bit yang di­set jika bit1 dan bit2 juga di­set.
// 9 = 1100
// 10 = 1100
echo 9 & 1 0,"\n"; // 8 = 1000
3.5.6.2.Bitwise OR
b1 | b2
Menghasilkan bit yang di­set jika salah satu dari bit1 dan bit2 di­set
echo 9 | 10,"\n"; // 11 = 1011

3.5.6.3.Bitwise XOR
b1 ^ b2
Menghasilkan bit yang di­set jika salah satu dari bit1 dan bit2 di­set, tapi tidak keduanya.
echo 9 ^ 10,"\n"; // 3 = 0011
Bitwise NOT
~b1
Menghasilkan bit yang di­set jika b1 tidak di­set, dan kebalikannya
Shift left (geser bit ke kiri)
b1 << n
Menggeser bit b1 sebanyak n ke kiri.
Setiap pergeseran satu bit sama dengan “kalikan dengan 2”
echo 10 << 1 , "\n"; // 20 = 11000
Shift right (geser bit ke kanan)
b1 >> n
Menggeser bit b1 sebanyak n ke kanan.
Setiap pergeseran satu bit sama dengan “bagi dengan 2”
echo 10 >> 1 , "\n"; // 5 = 0011

3.5.7.Operator String
Operator dot (titik) digunakan untuk menggabungkan string dengan string atau tipe data lainnya.
Contoh:
$a = 'saya...';
$b = 'belajar php';
$c = $a . $b; // 'saya...belajar php'

3.6.Kendali Alur Program
3.6.1.Conditional
Statemen if elseif else digunakan untuk menguji beberapa kondisi.
Berikut ini contoh program membaca bilangan dari stdin (keyboard), lalu membandingkan dengan yang ada di program:
$ditebak = 123;
echo "ayo tebak: ";
$tebak = chop(fgets(STDIN));
if($tebak == '') {
echo("kosong!\n");
} elseif($tebak < $ditebak) {
echo("terlalu kecil\n");
} elseif ($tebak > $ditebak) {
echo("terlalu besar\n");
} else {
echo 'benar ...',"\n";
}

3.6.2.switch
Switch dapat digunakan sebagaimana if elseif else, tapi lebih tepat lagi digunakan untuk mengevaluasi sebuah kondisi lalu membandingkan hasil evaluasi tersebut dengan literal integer atau string.
Perhatikan setelah switch digunakan statemen break untuk mencegah statemen berikutnya dalam blok switch dieksekusi:
echo "3 rasa es krim:\n\t1)moka\n\t2)stroberi\n\t3)mengkudu\n";
echo "pilih: ";
$pilih = chop(fgets(STDIN));
switch($pilih) {
case 1:
echo "yum yum yum\n";
break;
case 2:
echo "slur p..slur p..\n";
break;
case 3:
echo "yaak .. bleek ..\n";
break;
default :
echo 'tidak ada',"\n";
}

3.6.3.Struktur loop
Struktur loop adalah struktur untuk melakukan iterasi atau pengulangan eksekusi satu atau beberapa statement.
PHP memiliki beberapa struktur loop: for, while, do while, foreach. for
Menggunakan 3 blok ekspresi yang dieksekusi secara berbeda:
1. satu kali di awal eksekusi statemen for
2. setiap kali di awal loop di evaluasi nilainya untuk menentukan
apakah eksekusi loop berikutnya akan dilakukan
3. setiap kali di akhir loop
1. echo "hitung faktorial dari :";

2. $n = chop(fgets(STDIN));
3. $faktorial = 1;
4. for($a = $n; $a > 0; $a­­)
5. {
6. $faktorial *= $a;
7. }
8. echo "$faktorial \n";
Statement for dieksekusi dengan langkah­langkah sebagai berikut :
1. Pada awal eksekusi statemen for nilai $a di set sama dengan $n
(baris 4), langkah ini hanya dilakukan satu kali saja.
2. Masih di baris 4: diperiksa apakah $a masih lebih besar dari 0,
jika benar maka blok for mulai di­eksekusi (antara baris 5 dan 7),
jika tidak benar maka eksekusi statemen for berakhir.
3. Sebelum mengulang eksekusi loop, nilai $a dikurangi 1
4. Kembali ke langkah 2.
Ketiga blok dapat terdiri lebih dari satu ekspresi, yang dipisahkan oleh koma (,). Jika blok kedua terdiri lebih dari satu ekpresi maka blok ekspresi tersebut diperlakukan seperti halnya jika koma diganti dengan operator || (logical operator or).
# pembangkit fibonacci
echo "hitung fibonacci sampai: ";
$maks = chop(fgets(STDIN));
f or($a = 0, $b = 1; $b < $maks; $tmp=$a, $a = $b, $b += $tmp) {
echo $b," ";
}
Jika ekspresi blok kedua adalah kosong, maka loop for akan dieksekusi tanpa berhenti, dan hanya dapat keluar dari dalam blok dengan statemen break.

3.6.3.1.while
Statemen while digunakan untuk menjalankan pengulangan selama ekspresi dalam while adalah TRUE.
Contoh pada penghitung faktorial jika menggunakan while:
echo "hitung faktorial dari :";
$a = chop(fgets(STDIN));
$faktorial = 1;
while($a > 0)
{
$faktorial *= $a;
$a­­;
}
echo "$faktorial \n";
Pembangkit deret fibonacci menggunakan statement while:
# pembangkit fibonacci
echo "hitung fibonacci sampai :";
$maks = chop(fgets(STDIN));
$a = 0; $b = 1;
while($b < $maks) {
echo $b," ";
$tmp=$a; $a = $b; $b += $tmp;
}

3.6.3.2.do while
Loop do­while dieksekusi minimum satu kali. Blok dalam loop akan dieksekusi selama ekspresi yang diuji dalam while bernilai TRUE.
$ditebak = 123;
do {
echo "ayo tebak: ";
$tebak = chop(fgets(STDIN));
if($tebak == '') {
echo("kosong!\n");
} elseif($tebak < $ditebak) {
echo("terlalu kecil\n");
} elseif ($tebak > $ditebak) {
echo("terlalu besar\n");
} else {
echo 'benar ...',"\n";
}
} while($tebak != $ditebak)
3.6.3.3.break
Statement break digunakan di dalam loop untuk mengubah alur eksekusi sehingga keluar dari
loop tersebut. Tapi jika loop tersebut ada di dalam loop yang lain, maka eksekusi beralih ke
loop luar, tepat setelah akhir loop dalam tersebut.
1. $ditebak = 123;
2. while(true) { # loop 1
3. while(true) { # loop 2
4. echo "ayo tebak: ";
5. $tebak = chop(fgets(STDIN));
6. if($tebak == '') {
7. echo("kosong!\n");
8. } elseif($tebak < $ditebak) {
9. echo("terlalu kecil\n");
10. } elseif ($tebak > $ditebak) {
11. echo("terlalu besar\n");
12. } else {
13. echo 'benar ...',"\n";
14. break;
15. }
16. } # akhir loop 2
17. echo "lanjut? ";
18. ya = chop(fgets(STDIN));
19. if($ya == 'n') break;
20.} # akhir loop 1
Perhatikan pada contoh ada 2 loop (dimulai dari baris 2 dan 3) .
Perintah break pada baris 14 hanya mengalihkan eksekusi dari loop2 ke loop 1, tapi tidak mengeluarkan dari loop 1. Diperlukan statemen break (baris 19) dari loop 1 untuk dapat keluar dari loop tersebut.

3.6.3.4.continue
Statemen continue digunakan untuk mengubah alur eksekusi program agar segera menjalankan iterasi berikutnya sehingga statemen­statemen di bawah statemen continue ini tidak dieksekusi.
$ditebak = 123;
$min_coba = 3;
$coba = 0;
while(true) {
$coba++;
echo "ayo tebak: ";
$tebak = chop(fgets(STDIN));
if($tebak == '') {
echo("kosong!\n");
} elseif($tebak < $ditebak) {
echo("terlalu kecil\n");
} elseif ($tebak > $ditebak) {
echo("terlalu besar\n");
} else {
echo 'benar ...',"\n";
break;
}
if($coba < $min_coba) continue;
echo "menyerah?[y/n] : ";
$insap = chop(fgets(STDIN));
if($insap == 'y')
break;
else
$coba = 0;
}

3.6.3.5.foreach
Statement foreach digunakan khusus untuk mengiterasi array, ada 2 bentuk
untuk array dengan indeks integer mulai dari 0:
$array = array(1 0,20,30,40,50);
f oreach($array as $value) {
echo $value , "\n";
}
$hash = array('kode'=> 'A123', 'nama'=> 'susu sapi', 'harga'=>
12000, 'satuan'=> 'liter');
foreach($hash as $key => $value) {
echo $key , ' => ', $value , "\n";
}

3.6.3.6.return
Mengubah alur eksekusi sehingga baris­baris berikutnya tidak dijalankan lagi. Jika digunakan dalam fungsi statemen return dapat digunakan untuk mengembalikan nilai ke pemanggil fungsi.

3.6.3.7.Exception
Exception adalah object yang digunakan untuk mengubah ekselusi program ketika terjadi kesalahan (error). Untuk menangani exception digunakan konstruksi blok try dan catch. Konstruksi blok try{} berisi statemen yang dapat mengakibatkan terjadinya exception, konstruksi catch terdiri atas bagian deklarasi object exception yang ditangani dan bagian blok statemen yang menangani objek exception tersebut.
Untuk mengakibatkan exception program menggunakan statement throw, yang menjadi parameter dari throw adalah objek Exception.
Exception baru dikenal pada PHP 5.
Contoh:
try {
echo 'baris berikutnya akan menghasilkan exception',"\n";
throw new Exception('error yg disenga ja');
echo 'baris ini akan diabaikan',"\n";
} catch (Exception $e) {
echo 'ada exception.. ',$e,"\n";
}
Melalui penggunaan exception secara tepat, dapat memudahkan penanganan error. Exception adalah cara alternatif untuk pen­signal­an error yang lebih baik dari cara konvensional menggunakan return value. Return value seharusnya hanya digunakan untuk mengembalikan hasil komputasi, dan tidak pernah mengembalikan signal (kode) error.

3.7.Fungsi
PHP mengenal 3 jenis fungsi:
1. Fungsi yang merupakan bagian dari PHP (bult­in)
Fungsi ini selalu tersedia untuk digunakan.
2. Fungsi yang disediakan oleh extension module.
Fungsi jenis ini baru tersedia setelah user menginstal extension
module tertentu.
3. Fungsi yang didefinisikan oleh pengguna bahasa PHP (user defined
function)Fungsi jenis ini dibuat sendiri oleh pengguna bahasa PHP,
baru tersedia jika definisi fungsi dimasukkan ke dalam scope
program melalui statement : require, include, dan sejenisnya,
Fungsi yang dibahas pada bagian ini adalah yang terakhir.
3.7.1.Mendefinisikan Fungsi
Fungsi didefinisikan menggunakan keyword function, diikuti nama fungsi. Fungsi dapat menerima nol atau lebih parameter fungsi dan dapat menghasilkan nilai keluaran, dapat pula tidak.
Berikut ini contoh fungsi yang tidak menerima parameter fungsi, dan tidak mengembalikan nilai , hanya mencetak bentuk piramida ke stdout:
function piramida() {
$t = 20;
f or($i = $t, $j=0; $i > 0; $i­­, $j++) {
echo str_repeat(' ', $i);
echo str_repeat('^', $j*2+1),"\n";
}
}
Fungsi piramida, menggunakan fungsi built­in str_repeat untuk menghasilkan string yang ber­ulang.
piramida();
PHP 5 mendukung jumlah parameter fungsi yang panjangnya tidak tertentu. Berikut ini contoh fungsi yang menghasilkan deret fibonacci yang dikembalikan sebagai array, menerima parameter fungsi bilangan maksimum :
function fibonacci($max) {
$a = array(1,1);
$i = 1;
while(true) {
$z = $a[$i]+$a[$i­-1];
echo $z,"\n";
if($z > $max) break;
$a[++$i]= $z;
}
return $a; # mengembalikan array
}
Fungsi ini menerima parameter $max untuk membatasi bilangan terbesar yang akan
dihasilkan, dan mengembalikan deretan bilangan dalam bentuk array. Berikut cara
pemanggilannya:
$deret = fibonacci(100);
print_r($deret) # cetak array

3.7.2.Nilai Default untuk parameter
Untuk parameter fungsi bertipe skalar (numerik, string, array, bukan objek) , dapat ditentukan nilai defaultnya, contoh mencetak bilangan fibonacci secara rekursif :
function fibonacci($max, $a=0, $b=1) {
if($b < $max) {
echo $b, " ";
fibonacci($max, $b, $b+$a); # rekursi
}
}
fibonacci(100);
Parameter default memudahkan penggunaan fungsi.

3.7.3.Pemanggilan Fungsi
Pemanggilan fungsi harus selalu menggunakan kurung, baik untuk fungsi yang menerima parameter maupun yang tidak.Pada contoh­contoh sebelumnya echo seringkali dipanggil tanpa kurung, hal ini karena echo sesungguhnya bukanlah fungsi, tapi echo adalah language construct (seperti halnya if, for, while, return)

3.8.Class
PHP sebagai bahasa yang mendukung pemrograman ber­orientasi objek (Object Oriented Programming) mengenal struktur class.
Class memudahkan enkapsulasi data dan reusabilitas kode program.

Mendefinisikan class
Class didefinisikan menggunakan keyword class diikuti nama class yang biasanya diawali dengan huruf kapital, badan (implementasi) class dibatasi oleh kurung kurawal. Sebuah class dapat memiliki satu atau lebih method, yaitu fungsi yang berasosiasi dengan class atau objek dari class tersebut. Sebuah class dapat memiliki method khusus untuk meng­inisialisasi­kan objek dari class tersebut yang disebut constructor, constructor adalah method pertama dari class yang dieksekusi sebelumnya objek tersebut dipanggil. Jika constructor tidak didefinisikan maka PHP menyediakan default constructor.
Class dapat mendefinisikan member variabel, yaitu variabel yang hanya dapat diakses melalui object dari class tersebut. Member variabel dapat didefinisikan langsung dalam method melalui objek khusus $this.
Berikut ini class Vektor:class Vektor { // awal definisi
/* constructor */
function Vektor($i, $j) {
$this­>i = $i; // member variable i
$this­>j = $j; // member variable j
}
/* @return vektor */
function tambah($v) {
return new Vektor($this­>i + $v­>i, $this­>j + $v­>j);
}
/* @return vektor */
function kali($skalar) {
return new Vektor($this­>i*$skalar , $this­>j * $skalar);
}
/* @return panjang vektor */
function to_skalar() {
return sqrt($this­>i * $this­>i + $this­>j * $this­>j);
}
/* method khusus untuk merepresentasikan sbg string (hanya di PHP5) */
function __toString() {
return "($this­>i, $this­>j)";
}
} // akhir definisi class
Untuk mengakses member variable atau member method dari sebuah class melalui objeknya maka digunakan operator -> .
Objek sebuah class hanya dapat diadakan melalui constructor class tersebut, baik secara langsung dipanggil menggunakan new atau melalui method lain.
$v1 = new Vektor(3,4); // objek $v1 diadakan
$v2 = new Vektor(7 8); // objek $v2 diadakan
$v3 = $v1­>tambah($v2);
echo "$v1 + $v2 = $v3", "\n";
echo $v1­>to_skalar(), "\n";
echo '$v3­>i == ', $v3­>i ,"\n";
echo '$v3­>j == ', $v3­>j ,"\n";

3.9.Reusabilitas
PHP menyediakan konstruksi untuk mendukung reusabilitas kode program dalam bentuk class, fungsi, konstanta atau variabel global.
Ada 4 statemen yang digunakan untuk reusabilitas kode program

3.9.1.include
Digunakan untuk memasukkan (to include) file ke baris ditempatkannya statemen include ini , statemen include memerlukan parameter berupa path ke file yang akan di­include. Path dapat berupa path relatif atau path absolut.

3.9.2.require
Statemen require persis sama dengan include hanya saja jika file yang akan dimasukkan tidak ditemukan dapat menyebabkan fatal error sehingga menghentikan eksekusi program. Menggunakan require lebih menjamin disertakannya file atau definisi fungsi yang diperlukan.

3.9.3.include_once
Sama dengan include, tapi jika file sudah pernah di­include sebelumnya tidak akan dimasukkan lagi.

3.9.4.require_once
Sama dengan include_once, tapi jika file yang di­include tidak ditemukan menyebabkan fatal error.

3.10.Menggunakan Fungsi dan Class dan file lain
Agar sebuah fungsi atau sebuah class dapat digunakan oleh program pemanggil yang berbeda, maka fungsi atau class tersebut di simpan dalam file tersendiri. Statemen require_once sangat tepat digunakan untuk menyertakan definisi fungsi atau class dari file tersebut, karena menjamin definisi fungsi atau class hanya satu kali dipanggil.
Misal class Vektor disimpan dalam file Vektor.php di dalam direktori: /home/fadhilah/classes, maka jika program testvektor1.php perlu menggunakan class tersebut, digunakan require_once:
1. require_once('/home/fadhilah/classes/Vektor php');
2. $v1 = new Vektor(3,4);
3. $v2 = new Vektor(7,8);
4. $v3 = $v1­>tambah($v2);
5. echo "$v1 + $v2 = $v3", "\n";
6. echo $v1­>to_skalar(), "\n";
7. echo '$v3­>i == ', $v3­>i ,"\n";
8. echo '$v3­>j == ', $v3­>j ,"\n";
Dapat juga mengubah include_path dari PHP dengan fungsi set_include_path, baris 1 digantikan oleh 2 baris berikut:
set_include_path(get_include_path()./home/fadhilah/classes/);
req uire_once('Vektor php'); .
Keuntungan menggunakan set_include_path adalah statemen require_once tidak perlu menyertakan path ke file­file tersebut, hanya perlu menyebutkan nama filenya saja.

0 komentar:

Posting Komentar

Tinggalkan Pesan.
Kritik dan saran yang membangun sangat saya harapkan .

Related Posts Plugin for WordPress, Blogger...