I. Mengenal PERL
1.Tentang PERL
PERL adalah bahasa pemrograman yang menggunakan tipe data dinamis, program PERL dapat langsung dieksekusi tanpa harus melalui proses kompilasi tersendiri ke format binary yang dapat dieksekusi. PERL banyak digunakan pada aplikasi manajemen sistem dan jaringan, pemrograman web, manipulasi teks, akses ke database. Berikut ini beberapa aplikasi yang menggunakan PERL yang cukup dikenal: mrtg, SQL Ledger (aplikasi akunting), Webmin (aplikasi admin), spam assasin (anti spam).2.Menjalankan Program PERL
2.1.Eksekusi dari file
Berikut ini sebuah program PERL salam.pl, yang mencetak salam universal di konsol, jika ada argumen pada command line maka ditampilkan setelah salam. #!/usr/local/bin/perl if ($#ARGV > 1) { print "assalamu'alaikum $ARGV[0]\n"; } else { print "assalamu'alaikum\n"; } Eksekusi di shell menggunakan PERL interpreter, sbb: bash% perl salam.pl Hafizh assalamu'alaikum Hafizh Agar dapat dieksekusi tanpa mengetikkan interpreter perl di command line, file salam.pl perlu diset permissionnya. Misalkan dengan perintah : bash% chmod 755 salam.pl bash% ./salam.pl Hafizh assalamu'alaikum Hafizh Pastikan program PERL diawali dengan path lengkap ke interpreter perl yang terinstal di sistem operasi anda, untuk sistem berbasis Linux dan Unix, path tersebut harus diawali dengan karakter '#!' , seperti contoh: #!/usr/local/bin/perl2.2.Eksekusi dari command line
PERL dapat mengeksekusi perintah secara langsung dari command line, tanpa perlu membuat file program, menggunakan options e di interpreter perl, contoh:
bash% perl e 'print ”Assalamu''alaikum\n”' Perhatikan dua kutip tunggal di tengah kata, karena kutip tunggal digunakan untuk membatasi perintah. Jika menggunakan kutip ganda untuk membatasi perintah : bash% perl e “print \”Assalamu'alaikum\n\””
3.Dasardasar PERL
3.1.Program PERL
Program PERL atau skrip PERL, biasa disimpan dalam file teks berakhiran .pl. Walaupun demikian perl interpreter tetap akan mengeksekusi program PERL yang tidak menggunakan ekstensi .pl. Sebuah program PERL yang executable dapat menggunakan hanya statement, tanpa perlu mendefinisikan fungsi khusus seperti main() dalam program bahasa C.Program PERL dapat terdiri atas statemen, deklarasi subroutine, konstruksi kondisional, konstruksi loop, konstruksi block.
3.1.1.Statemen
Statemen diakhiri dengan tanda titik coma. Statemen dapat berbentuk deklarasi variabel, assignment variabel dan pemanggilan fungsi. White space (spasi, baris baru) diabaikan. print "open source software ?!", " it's a miracle", ", do you believe miracle?\n";3.1.2.Komentar
Sebagaimana bahasa pemrograman lainnya, programmer PERL dapat menuliskan komentar dalam kode program, dengan menempatkan karakter '#' sebelum baris komentar, contoh: # menghitung hitung luas $area = $pi * $radius * $radius; Atau dapat juga setelah bagian kode: $area = $pi * $radius * $radius; # menghitung hitung luasKomentar diperlakukan sebagaimana white space.
3.2.Variabel dan Tipe data
Variabel digunakan untuk menyimpan data. PERL memiliki 3 tipe variabel utama: skalar, array dan hash. Namanama variabel, dan identifier lainnya dalam PERL adalah case sensitive.3.2.1.Skalar
Variabel skalar menyimpan data bernilai tunggal, tipe data dapat berupa string atau bilangan. Tipe data secara otomatis ditentukan pada saat assignment variabel. tidak perlu mendeklarasikan tipe data sebelum assignment. Nama variabel skalar dimulai dengan karakter '$'. Contoh: # string $file = '/etc/profile'; $kota = “depok”; # integer $_num = 255; $byte_ = 0x00ff; # float $konstanta_pi = 22/7;3.2.1.1.String petik tunggal (single quote) dan petik ganda (double quote)
String dapat dinyatakan dalam petik tunggal (') dan petik ganda (“). String dengan petik tunggal menyatakan data adalah seperti yang tertulis, tidak ada interpretasi terhadap karakterkarakter pada string. String dengan petik ganda menyatakan bahwa interpreter PERL harus melakukan interpretasi terhadap karakterkarakter pada string tersebut. Contoh: # dicetak dalam satu baris, karakter \n tidak diinterpretasikan $str1 = '\niman \nilmu \namal \n'; print $str1; # dicetak dalam 3 baris diikuti baris baru $str2 = “\niman \nilmu\namal \n”;print $str2; # mencetak 'honour the adzan' diikuti baris baru $str3 = 'honour'; $str4 = “$str3 the adzan\n”; Variabel Khusus PERL juga mengenal beberapa variabel skalar khusus, seperti $ARG, $_, $!, $1, $2, $3, dan sebagainya yang dijelaskan di man perlvar
3.2.2.Array
Array menyimpan sekumpulan nilai secara berurutan (sekuensial), yang biasa disebut list, nilainilai yang disimpan dapat berbedabeda tipe datanya. Untuk membaca nilai anggota array digunakan nomor indeks integer dimulai dari nol. Variabel array dideklarasikan menggunakan karakter @ di depan nama variabel, data anggota array ditempatkan dalam kurung (), nilainilai anggota dipisahkan oleh koma. Nilai anggota array dibaca menggunakan operator [] dan nomor indeks. Contoh: @prima1 = (2,3,5,7,11,13,17); # mencetak '5' print $prima1[2]; Untuk mendapatkan jumlah anggota array digunakan variabel $# diikuti nama variabel, tapi nilainya adalah jumlah anggota array dikurangi satu. Nilai ini juga dapat digunakan untuk membaca elemen terakhir. Contoh : @hari2 = (1, "senin",2,"selasa", 3,"rabu",4,”kamis”, 5, ”jumat”); # mencetak 'jumlah anggota : 9' print “jumlah anggota : $#hari2 \n”; # mencetak 'elemen terakhir : jumat' print “elemen terakhir : $hari2[$#hari2] \n”; Jika sebuah program mencoba menulis anggota array pada posisi indeks yang lebih besar dari ukuran array, maka PERL secara otomatis menambah ukuran array sampai posisi baru tersebut. Contoh: @bil3 = (10, 20, 30, 40); # mencetak 'ukuran array : 3'print “ukuran array : $#bil3 \n”; $bil3[110] = 1234; # mencetak 'ukuran array : 110' print “ukuran array : $#bil3 \n”; Membaca dari array dengan indeks yang lebih besar tidak akan menyebabkan error dan tidak akan menambah ukuran array. Contoh: @bil4 = (10,20,30,40); $t1 = $bil4[89]; # mencetak 'ukuran array : 3' print "ukuran array : $#bil4 \n"; Jika variabel array dievaluasi dalam konteks nilai skalar (scalar context) maka variabel tersebut dievaluasi sebagai jumlah anggota array, contoh: # dievaluasi dalam scalar context @arr = (10,20,6,19,11,22); if(@arr == 6) { print "jumlah anggota array ada 6\n"; } Array dapat disalin sebagian anggotanya ke array lain dengan mudah (array slice), menggunakan operator [], Contoh: @arr1 = ('semar', 'gareng', 'petruk', 'bagong', 'arjuna', 'srikandi'); @arr2 = @arr1[2,4] # 'petruk' dan 'arjuna' @arr3 = @arr1[1..3] # 'gareng', 'petruk', 'bagong' @arr4 = @arr1[1..$#arr1] # semua kecuali 'semar'
3.2.3.Hash
Hash menyimpan sekumpulan nilai yang menggunakan pasangan nama kunci dan nilai. Nama kunci dalam sebuah variabel hash haruslah unik, tidak boleh ada 2 pasangan yang menggunakan nama kunci yang sama. Variabel hash didefinisikan menggunakan karakter % diikuti nama variabel. Nilainilai anggota hash terdiri atas pasangan nama kunci dan nilai yang dipisahkan oleh koma. Nama kunci dan pasangan dituliskan berurutan, dapat dipisahkan tanda koma atau dapat juga dipisahkan oleh karakter '=>'. Untuk membaca nilai anggota hash digunakan operator kurawal {} dan nama kunci. Contoh:%rasa_buah1 = ('asam', 'asem djawa', 'manis', 'manggis', 'pahit' , 'pare'); # mencetak 'yang pahit = pare' print “yang pahit = $rasa_buah1{'pahit'} \n”; # dapat juga ditulis seperti ini %rasa_buah2 = ( 'asam' => 'asem djawa', 'manis' =>' manggis', 'pahit' => 'pare'); $rasa = 'manis'; # mencetak 'yang manis = manggis' print “yang $rasa = $rasa_buah2{$rasa} \n”;
3.3.Operator
PERL memiliki banyak operator dan fungsi yang builtin, berikut ini beberapa operator yang umum digunakan, selengkapnya dapat dilihat dengan man perlop. Manipulasi String . Concat (penggabungan) Aritmetika + Penjumlahan Pengurangan * Perkalian / Pembagian Perbandingan Bilangan '== kesamaan '!= Ketidaksamaan < Kurang dari > Lebih dari <= Kurang dari atau sama dengan >= Lebih dari atau sama dengan Perbandingan String eq kesamaanne Ketidak samaan lt Kurang dari gt Lebih dari le Kurang dari atau sama dengan ge Lebih dari atau sama dengan Perhatikan bahwa PERL menyediakan operasi pembanding string dan pembanding bilangan. String dibandingkan secara alpabetis. Secara alpabetis, string '100' lebih kecil dari '8'. Contoh: $a = 100; $b = 8 if ( $a > $b ) { print “Bilangan $a lebih besar dari $b\n”; } else { print “Bilangan $a tidak lebih besar dari $b\n”; } if ( $a gt $b ) { print “String $a secara alpabetis lebih besar dari $b”; } else { print “String $a secara alpabetis tidak lebih besar dari $b”; } Operasi perbandingan menghasilkan nilai benar (true) atau salah (false). TRUE dan FALSE dalam PERL PERL tidak mengenal tipe data khusus untuk mewakili TRUE dan FALSE. Dalam PERL nilai berikut ini adalah FALSE: bilangan 0, string '0', list kosong (), dan undef , selain nilainilai tersebut adalah TRUE.
3.4.Fungsi
PERL memiliki fungsi builtin yang kaya, salah satu yang sudah diperkenalkan adalah print. Fungsi dapat menerima nol atau lebih argumen. Argumen sebuah fungsi dapat berupa skalar, list, atau keduanya. Pemanggilan fungsi dapat menggunakan tanda kurung () diantara argumen, dapat juga tidak. Fungsi printadalah fungsi yang menerima argumen list. Contoh:print “saya”, “belajar”, “PERL”; # sama dengan
print (“saya”, “belajar”, “PERL”); Fungsi print juga dapat menerima argumen skalar berupa filehandle dan list. Tentang filehandle akan dijelaskan dibagian File Input dan Output. Fungsi dapat mengembalikan nilai skalar atau list. Berikut ini fungsi localtime, yang mengembalikan list berisi data waktu, dipanggil tanpa argumen: @bulan = ('jan', 'peb', 'mar', 'apr', 'mei', 'jun', 'jul', 'ags', 'sep', 'okt', 'nop', 'des'); @hari = ('minggu', 'senin', 'selasa', 'rabu', 'kamis', 'jumat', 'sabtu'); ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime; print "Bulan $bulan[$mon] hari $hari[$wday] tgl $mday tahun ",1900+$year,"\n"; Perlu diingat bahwa PERL pertamakali dikembangkan di lingkungan Unix, jadi akan banyak ditemukan fungsifungsi yang familiar dengan sistem operasi ini, misalnya yang berhubungan dengan file system, socket, network, interprocess communication, dan process control.
Daftar fungsi builtin secara lengkap dapat dibaca dengan man perlfunc.
Penjelasan untuk fungsi tertentu dapat dicari dengan perldoc -f <nama fungsi>.
Contoh:
bash% perldoc -f localtime
3.5.Konstruksi Kondisional
Berikut ini konstruksi kondisional yang disediakan PERL
3.5.1.if
Mengeksekusi statemen jika kondisi bernilai benar. Untuk percabangan menggunakan elsif
dan else. Bentuknya :
if ( kondisi1) { # statemenstatemen } elsif (kondisi2) { # statemenstatemen } elsif (kondisi3) { # statemenstatemen } else {
# statemenstatemen }
3.5.2.unless
Adalah kebalikan dari if.3.6.Konstruksi Loop
PERL mengenal beberapa jenis loop:3.6.1.for
Digunakan untuk melakukan pengulangan berdasarkan 3 ekspresi yang masingmasing untuk : memulai loop, menentukan apakah melanjutkan eksekusi loop, dieksekusi pada akhir loop supaya kondisi untuk mengakhiri loop dapat dicapai. Bentuknya: for ( <ekspresi1>; <ekpresi2>; <ekspresi3>) { # statemenstatemen } Ekspresi yang umum digunakan adalah sebagai berikut: for ( $i = 0; $i < $jumlah_pengulangan; $i++ ) { # statemen }3.6.2.foreach
Digunakan untuk melakukan iterasi berdasarkan anggota sebuah array atau list. Bentuknya: foreach <variabel_skalar> (<ekspresi list>) { } Contoh: # iterasi atas array @hari = ('senin','selasa','rabu','kamis','jumat','sabtu','minggu'); foreach $h (@hari) { print "hari $h\n"; } # terhadap list $p = 1; foreach $q (2..6) { $p *= $q;} print "faktorial 6 = $p\n"; # atau terhadap array slice foreach $q (@hari[2..5]) { print "$q\n"; }
3.6.3.while
Loop dieksekusi selama kondisi adalah TRUE. Untuk keluar dari loop harus dengan mengubah kondisi menjadi false atau menggunakan statement last; Bentuknya : while(kondisi) { # statemen }3.7.Input dan Output ke file
3.7.1.Membaca dari file teks
Sebelum file dapat dibaca maka harus file dibuka dengan fungsi open, dengan mode “baca”, contoh: open($fh, '/etc/passwd'); Variable $fh adalah filehandle yang diperlukan untuk membaca dan menutup file. Selanjutnya setiap baris dibaca dengan operator <>. sebagai berikut: while($line = <$fh>) { # memproses $line } Setelah selesai file ditutup dengan fungsi close, contoh: close($fh)3.7.2.Menulis ke file teks
Perintah yang sama dengan program di atas dapat digunakan untuk menulis ke file. Pertama, file dibuka dengan mode 'tulis': open($fh, “> /path/ke/file”); selanjutnya dapat ditulis dengan perintah print, menggunakan file handle, sbb:print $fh “baris teks yang ditulis ...\n”; Seperti halnya dalam hal membaca, maka filehandle harus ditutup dengan close. Berikut ini contoh membaca dari file dan menulis ke file baru, atau mengcopy file: # mengcopy /etc/profile $fnam = '/etc/profile'; $fbaru = '/home/didi/copyprofile'; open($fh1, $fnam) or die “gagal baca $fnam, $!”; open($fh2, “>$fbaru”) or die “gagal menulis $fbaru, $!”; while($line = <$fh1>) { print $fh2 $line; } close($fh1); close($fh2);
Ekspresi “or die ... “ digunakan sebagai error handler jika file tidak dapat dibuka.
Variabel khusus $! digunakan untuk menampilkan pesan error dari sistem.
3.8.Subrutin
Pada program aplikasi umumnya, kumpulan statemen yang mengimplementasikan sebuah operasi tertentu didefinisikan dalam sebuah subrutin. Beberapa subrutin biasanya didefinisikan dalam sebuah file tersendiri, sehingga dapat digunakan oleh berbagai program pemanggil. Berikut ini bentuk pendefinisian subrutin : sub <nama subrutin> { } Subrutin dapat menerima parameter, tapi PERL tidak mengenal named formal parameter, parameter yang dikirimkan ke subrutin dapat diakses dalam subrutin melalui array khusus @_ , berikut ini contoh subrutin sederhana yang menghitung nilai faktorial : sub faktorial { my ($num) = @_; my $res = 1; foreach my $a (1..$num) { $res *= $a; # atau $res = $res * a } return $res;}
# return TRUE value 1;
Perhatikan bahwa jika subrutin didefinisikan di file tersendiri, maka file tersebut harus mengembalikan nilai TRUE, dalam program diatas digunakan bilangan 1.
Jika subrutin tersebut disimpan di file /home/didi/mylib/math.pl, maka dapat
dipanggil dari program lainnya sebagai berikut: req uire “/home/didi/mylib/math.pl” print "Faktorial 6 = ", faktorial(6),"\n"; Penjelasan lebih lengkap tentang subrutin dapat dibaca dari man perlsub
4.Penutup
PERL adalah bahasa pemrograman yang berdaya guna tinggi, yang terus digunakan dan dikembangkan oleh komunitas open source. Seperti halnya bahasa open source lain, PERL memiliki sistem dokumentasi yang sangat lengkap, pembaca sangat dianjurkan menelaah manual PERL yang terdistribusi bersama source code PERL.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 desktopbased. 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), namanama direktori (misal: /dir/instalasi/xxx/anda) dapat anda ubahsesuai 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.37bash% ./configure –prefix=/di r/ in stal as i/ ap ach e/ and a enableshared=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 php5.2.0.tar.gz 3. Konfigurasi dan kompilasibash% cd php5.2.0
bash% ./configure –prefix=/d ir /i ns tala si /p hp/ an da –with apxs=/di r/ in stal as i/ ap ach e/ and a/ bin /a pxs –withconfig filepath=/etc bash% make 4. Instal bash% make install 5. Instalasi module php dan phpcli selesai
2.Menjalankan Program PHP
Program PHP dapat dijalankan dengan 2 modus:2.1.Aplikasi Konsol
Buat program salam.php berikut ini disebarang direktori: <?php echo “assalamu'alaikum, Brother \n”; ?> Pastikan PHP CLI ada di PATH dengan perintah: bash% export PATH=/dir/instalasi/php/anda/bi n:$PATH Jalankan program dengan perintah php bash% php salam.php2.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.php3.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, contohcontoh 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 dan penutupnya 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 ● statement nonPHP (misal: HTML, WML, XML) Kedua jenis statemen dapat berselangseling lebih dari satu kali dalam program. PHP mengabaikan whitespace (spasi, tab, barisbaru) sebelum dan sesudah statemen, juga whitespace di antara tokentoken dalam statemen. Semua contoh program dalam tulisan ini tidak menuliskan tag pembuka <?php dan penutup ?> untuk menghemat ruang/kertas, kecuali jika ada bagian program yang menggunakan statemen nonPHP.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 caseinsenstive. 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: 1234567890 # desimal 01234567 # octal 0x123456789abcdef #hexadecimal3.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: .123456789 0.123456789 123456789e9 123.456789e43.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 variabel3.3.1.4.2.Petik Tunggal
String dengan petik tunggal tidak mengenal karakter khusus (baris baru, tab) dan tidak melakukan ekspansi variabel3.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: <<<Ini_Delimiter_heredoc Berikut ini adalah string dalam heredoc, ini ganti baris \ndan ini carriage return \r tulisan ini akan menimpa 'dan ini carriage return' Ini_Delimiter_heredoc;
3.3.2.Tipe Gabungan (compound)
Tipe gabungan adalah tipe yang dapat dibagi (decomposed) menjadi tipe yang lebih sederhana. PHP mengenal 2 jenis tipe gabungan:3.3.2.1.Array
Array di PHP pada dasarnya hanya ada satu jenis yaitu ordered map. Array di PHP dapat disamakan dengan associative array pada bahasa pemrograman lainnya (misal: PERL), yaitu merupakan deretan pasangan key dan value yang berurutan sesuai dengan urutan penyimpanan. Bedanya adalah array di PHP dapat diakses seperti list atau array berindeks integer berbasis 0 (zero based indexed) Array dibuat menggunakan constructor array(). Contoh $a = array( 'php' =>'aplikasi web', 'python' =>'aplikasi desktop', 'perl' =>'otomatisasi sysadmin','ruby' => 'aplikasi web', 'java' => 'aplikasi enterprise' ); echo 'php tepat untuk ' , $a['php'],"\n"; echo 'python cocok untuk ' , $a['python'],"\n"; Array berindeks 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: NULL3.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 diunset3.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 = 1000; $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 diassign 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; 11. $k2>X += 222; # X di $k2 diubah = 227 12.echo $k1>X ,"\n"; # X $k1 juga berubah = 227 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 = 100 0) { # selalu TRUE, seharusnya $a == 1000 echo “$a sama dengan 1000\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 103.5.2.Operator incrementing/decrementing
Menambah atau mengurangi bilangan dengan 1, terdiri atas: postincrement, preincrement, postdecrement, predecrement. $a = 10; $b = $a++; // postincrement echo "b == $b , a == $a \n"; // b == 10 , a == 11 $b = ++$a; // preincrement echo "b == $b , a == $a \n"; // b == 12 , a == 12 $b = $a; // postdecrement echo "b == $b , a == $a \n"; // b == 12 , a == 11 $b = $a; // predecrement echo "b == $b , a == $a \n"; // b == 10 , a == 103.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 == 203.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. // eq ual $a = 10; $b = '10'; echo $a == $b ? 'true':'false' , "\n"; // true3.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"; // true3.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 = '10'; $c =11; echo $a != $b ? 'true':'false' , "\n"; // false echo $a != $c ? 'true':'false' , "\n"; // true // not eq ual $a = 10; $b = '10'; $c =11; echo $a <> $b ? 'true':'false' , "\n"; // falseecho $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 = 10; $b = 11; $c = 10; 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"; // true3.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"; // FALSE3.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"; // FALSE3.5.5.3.Logical XOR
ekspresi1 xor ekspresi2 Operator XOR menghasilkan nilai TRUE jika salah satu dari ekspresi1 dan ekspresi2 bernilai TRUE, tapi tidak keduaduanya. // xor echo (true xor true)?'true':'false',"\n"; // FALSE echo (true xor false)?'true':'false',"\n"; // TRUE echo (false xor false)?'true':'false',"\n"; // FALSE3.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"; // FALSE3.5.5.6.Logical OR (||)
Samadengan operator OR sebelumnya tapi precedence nya lebih tinggi. // || echo (true || true)?'true':'false',"\n"; // TRUEecho (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 diset jika bit1 dan bit2 juga diset. // 9 = 1001 // 10 = 1010 echo 9 & 10,"\n"; // 8 = 10003.5.6.2.Bitwise OR
b1 | b2 Menghasilkan bit yang diset jika salah satu dari bit1 dan bit2 diset echo 9 | 10,"\n"; // 11 = 10113.5.6.3.Bitwise XOR
b1 ^ b2 Menghasilkan bit yang diset jika salah satu dari bit1 dan bit2 diset, tapi tidak keduanya. echo 9 ^ 10,"\n"; // 3 = 0011 Bitwise NOT ~b1 Menghasilkan bit yang diset jika b1 tidak diset, dan kebalikannyaShift 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 = 10100 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 = 0101
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 "slurp..slurp..\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 langkahlangkah 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 dieksekusi (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)); for($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 dowhile 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 segeramenjalankan iterasi berikutnya sehingga statemenstatemen 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(10,20,30,40,50); foreach($array as $value) { echo $value , "\n"; }untuk array asosiatif: $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 barisbaris 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 disengaja'); 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 pensignalan 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 (bultin) 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; for($i = $t, $j=0; $i > 0; $i, $j++) { echo str_repeat(' ', $i); echo str_repeat('^', $j*2+1),"\n"; } } Fungsi piramida, menggunakan fungsi builtin 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[$i1]; 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 contohcontoh 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 berorientasi 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 menginisialisasikan 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 program3.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 diinclude . 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
dimasukkan lagi.
3.9.4.require_once
Sama dengan include_once, tapi jika file yang diinclude 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. req uire_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 filefile tersebut, hanya perlu menyebutkan nama filenya saja.
4.Aplikasi Web
Bagian ini menjelaskan aspekaspek bahasa PHP yang khusus berhubungan dengan pengembangan aplikasi Web. Agar contohcontoh pada bagian ini dapat dijalankan, diperlukan web server (misal: apache) yang mendukung aplikasi PHP. Cara mensetup apache agar dapat mendukung PHP tidak dijelaskan.4.1.Method GET dan POST
Aplikasi web adalah berbasiskan interaksi antara 2 program, yang masingmasing berperan sebagai client dan server. Dalam konteks bahasan ini, server adalah web server (misal: apache httpd 2, apache httpd 1, tomcat, jetty) dan client adalah web browser (misal: mozilla firefox, konqueror, epiphany, opera) Server adalah program pertama yang berjalan dan menyediakan service yang dapat direquest oleh client. Selanjutnya client berjalan, dan mengirimkan request kepada server, server menerima dan memproses request tersebut dan menghasilkan response. Client menerima response dan merepresentasikan response tersebut ke pengguna. Web request dapat dikirimkan dalam 2 method (cara) GET dan POST. Method GET digunakan apabila operasi yang diharapkan terjadi di sisi server, akibat adanya request ini, tidak akan mengakibatkan perubahan (pada data atau sumber data). Method POST digunakan apabila operasi yang diharapkan terjadi di sisi server, akibat adanya request ini, akan mengakibatkan perubahan (pada data atau sumber data). Web request dapat memiliki parameter, yang diperlakukan oleh aplikasi sebagai data string. Pada method GET, parameter tersebut dikirimkan sebagai bagian dari URL, dan panjang parameter dibatasi oleh panjang maksimum URL. Pada method POST, parameter tersebut dikirimkan dalam body request. Panjang parameter tidak terbatas.4.2.Menangani request
Aplikasi PHP yang baik, dirancang untuk menangani request dengan benar. Menangani request terdiri atas: ● membaca data dari request sebagai masukan, termasuk parameter request. ● Melakukan proses untuk menghasilkan keluaran berdasarkan data request ● mengirimkan response4.2.1.Request GET
Pada aplikasi PHP, parameter dari request GET dapat diakses menggunakan variabel khusus $_GET yang sudah didefinisikan oleh PHP. Variabel $_GET ini adalah array assosiatif, semua value harus diakses menggunakan key.4.2.2.Request POST
Parameter dari request POST diakses menggunakan variabel $_POST.Seperti halnya $_GET, variabel ini juga array assosiatif. Contoh aplikasi web sederhana: Berikut ini contoh aplikasi web sederhana yang menerapkan berbagai subyek yang sudah dibahas.
4.3.Penjelasan Program
4.3.1.File head.php
Berisi header untuk setiap halaman web, agar tampilan konsisten. Header juga cocok untuk menempatkan include ke filefile yang menyediakan classclass atau fungsifungsi yang diperlukan oleh aplikasi. <?php define ("PEMILIK", "Irfan Mahdi"); req uire_once("ordersvc.php"); ?> <html><body> <h1>Warung Web</h1>4.3.2.File ordersvc.php
File ini berisi definisi class yang diperlakukan aplikasi untuk memproses pesanan. <?php class OrderService { private $produk = array('01'=>'Gadogado', '02'=>'Bakmi Ayam', '03'=>'Tong Seng'); private $pilihan = array ( '01' => array( 'cabe > 10','banyak sayuran','ketupat','nasi' ), '02' => array( 'pangsit kering','pangsit basah','bakso' ), '03' => array( 'banyak tulang','banyak daging','banyak kuah' ) ); // constructor function OrderService() {} // @return daftar produk function produk() { return $this>produk; } // @return pilihan function pilihan($prod) { return $this>pilihan[$prod]; } // proses pesanan function proses_pesanan($prod, $kirimke, $konfig) { echo 'Terimakasih, ',"\n"; echo "Kami segera mengirimkan pesanan ke <em>$kirimke</em>, kalau kebetulan lewat..<br/>\n"; if($konfig) { echo '<ul>'; foreach($konfig as $d) { echo '<li>', $this>pilihan[$prod][$d],"</li>\n"; } echo '</ul>'; } else { echo "Anda memilih menu standard<br>\n"; } } } ?>
4.3.3.File menu.php
Menampilkan menu pilihan: <?php include('head.php') ?> Selamat datang di warung <em><?php echo PEMILIK?></em><br/> Apa yang anda inginkan:<ol> <?php $os = new OrderService(); foreach($os>produk() as $key => $value) { echo '<li><a href="pesan.php?prod=',$key,'">',$value,'</li>',"\n"; } ?> </ol> <?php include('tail.php'); ?>
4.3.4.File pesan.php
Untuk memproses pesanan, dan menampilkan response. Jika pesanan sudah diproses form tidak ditampilkan lagi <?php include('head.php'); $os = new OrderService(); if (!empty($_POST)) { $konfig = $_POST['konfig']; $kirimke = $_POST['kirimke']; $prod = $_POST['prod']; if(empty($kirimke)) { echo "mau dikirim kemana?\n"; } else { $os>proses_pesanan($prod, $kirimke, $konfig); $sudahpesan = true; } } if (!$sudahpesan) {?> <for m method="post"> <table style="border: 1px solid;padding: 10px 10px 10px 10px; backgroundcolor: lightgreen;"> <tr><td> Konfigurasi </td><td> <?php $prod = $_GET['prod']; $options = $os>pilihan($prod); $i = 0; foreach($options as $value) { echo '<input type="checkbox" name="konfig[]" value="', $i++,'">', $value, "</option>\n"; } ?> </td> <tr><td>kirim ke alamat</td><td> <input type="text" name="kirimke" value=""></td> <tr><td colspan="2"> <input type="submit" name="ok" value="Pesan"> </td></tr> <input type="hidden" name="prod" value="<?php echo $prod;?>"></td> </for m> <?php } include('tail.php'); ?>
5.Penutup
PHP adalah bahasa pemrograman yang relatif mudah dipelajari. PHP saat ini adalah bahasa pemrograman web paling populer, sehingga dukungan library untuk aplikasi web dengan PHP cukup kaya. Jika anda baru mulai mengembangkan aplikasi web pastikan anda lebih dahulu menguasaiHTML (Hypertext Mark Up Language) dan gunakan HTML editor dan previewer yang cerdas sehingga membantu dalam menemukan kesalahankesalahan sintaks penulisan.
III. Mengenal Python
1.Apa itu Python
Python adalah bahasa pemrograman yang interpreted. Program python dapat langsung dieksekusi menggunakan interpreter, tanpa melalui proses kompilasi tersendiri. Python telah digunakan untuk berbagai aplikasi, mulai dari utilitas untuk administrasi sistem, pemrograman game, aplikasi web terintegrasi dengan database sampai aplikasi desktop berbasis Graphical User Interface. Python adalah bahasa tingkat lebih tinggi, lebih tinggi dari C/C++, memiliki struktur data builtin dengan kemampuan operasi yang kaya dan luwes, sehingga memungkinkan program Python lebih ringkas daripada jika ditulis dengan C/C++ atau bahkan Java. Python adalah bahasa yang modular, setiap program python adalah module, yang dapat diimport oleh program lain untuk dimanfaatkan objek atau fungsinya. Library python sangat extensible, bagi anda yang menguasai pemrograman C, tidak sulit untuk menambah fungsi baru atau module ke dalam library python.2.Menjalankan Interpreter Python
Setelah interpreter python terinstal, maka dapat dijalankan dengan caracara berikut ini: 1. Melalui shell, biasanya untuk menjalankan 1 statemen python:bash$ python -c "print 'assalamu\'alaikum'"
2. eksekusi statemen secara interaktif, menggunakan python sebagaimana shell sistem, setiap statemen diketik pada python shell prompt, dan langsung dieksekusi oleh interpreter, bash$ python >>> print “assalamu'alaikum” assalamu'alaikum >>> 60 * 60 * 24 86400 Pada tulisan ini, beberapa contoh diberikan dalam mode eksekusi interaktif, baris contoh tersebut diawali dengan '>>>' 3. Menggunakan program atau script python. Buat program salam.py, seperti berikut: #!/usr/local/bin/python print “assalamu'alaikum”
1. Perhatikan baris pertama mengacu ke path interpreter python, dijalankan sebagai berikut:
bash$ chmod 755 salam.py bash$ ./salam.py
3.Program Python
Program python adalah program teks dengan encoding ASCII, dan dapat juga ditulis dengan encoding lain (misal: Unicode). Penulisan identifer harus menggunakan ASCII.4.Statemen
Statemen diakhiri dengan baris baru, tapi statemen dapat melintas baris jika interpreter menganggap statemen tersebut belum sempurna. Tidak perlu karakter khusus untuk mengakhiri statemen. Python memperlakukan indentasi di awal baris secara khusus, indentasi digunakan sebagai penanda blok statemen. Pada bagian tentang kendali alur program hal ini akan dibahas lebih lanjut.5.Komentar
Setiap baris komentar harus diawali dengan '#'. Komentar tidak harus selalu di awal baris. Contoh: # rumus luas lingkaran # ini komentar baris kedua luas = 22 / 7 * 14 * 14 sisa = 106 % 3 # menghitung sisa pembagian6.Objek dan variabel
Objek adalah abstraksi data, setiap data dalam python diwakili oleh objek atau oleh relasi antara objek. Setiap objek memiliki id yang unik dan tidak berubah, id objek dapat diketahui menggunakan fungsi id(). Operator is dapat digunakan untuk membandingkan identitas objek.Object memiliki tipe dan nilai. Tipe sebuah objek dapat diketahui menggunakan fungsi
type(), tipe sebuah objek juga tidak dapat diubah.
print type(123) # 123 adalah objek v1 = 123 # assignment: variabel sebagai referensi ke objek print type(v1) # tipe v1 adalah tipe objek yg direferensikan print id(v1) # id objek print v1 # mencetak nilai objek yang direferensikan oleh v1 Variabel dapat langsung diassign tanpa dideklarasikan terlebih dahulu, ekspresi yang mengacu ke sebuah variabel sebelum variabel tersebut diassign menyebabkan error. a = 100 print id(a) b = a print a is b # a dan b mengacu ke objek yang sama del(a) # dimusnahkan # print a is b # menyebabkan error, a tidak didefinisikan print b # b dan objek yang direferensikan masih ada print id(b)
Setelah assignment, sebuah variabel dapat dimusnahkan dengan fungsi del(), jika sebuah
ekspresi mencoba mengacu variabel yang sudah didel() akan menyebabkan error.
Variabel dapat diassign ke objek khusus yang merepresentasikan ketiadaan, yaitu None.
7.Tipe data, literal dan operasi
Objek dibedakan tipe datanya karena setiap tipe data memiliki operasioperasi tersendiri. Bagian ini menjelaskan berbagai tipe data dan operasi yang berasosiasi dengan tipe data tersebut.7.1.Bilangan
Python mendukung bilangan integer , long integer dan floating point. Penulisan literal bilangan bulat dapat dengan integer, long integer, dan keduanya dapat ditulis dalam basis octal, desimal dan heksadesimal. Penulisan literal float menggunakan tanda '.' (titik) desimal. 2147483647 # integer terbesar untuk 32 bit arithmetic 2147483648L # long 01234567 # octal 0x123456789abcdef # hexadecimal Operasi aritmetika antara integer dengan integer, selalu menghasilkan integer, operasi integerdengan float akan menghasilkan data float. Contoh : >>> 22 / 7 * 21 * 21 # integer dan integer 1323 >>> 22 / 7.0 * 21 * 21 # integer dan float 1386.0 Bilangan di python adalah firstclass object, yang memiliki operasioperasi nya sendiri, contoh: bil = 1234 bil.__mod__(7) # sama dengan bil % 7
7.2.String dan Unicode String
Selain bilangan python juga dapat memanipulasi data String dengan pengkodean ASCII maupun Unicode. Penulisan string literal menggunakan petik tunggal atau petik ganda. Python tidak membedakan kedua cara tersebut.Kedua cara penulisan mengenal karakter khusus seperti baris baru '\n' dan tab '\t', penulisan literal karakter ascii menggunakan octal dan decimal juga didukung. Untuk menulis string tanpa pengenalan karakter khusus, digunakan prefix 'r' di depan string. print 'Assalamu\'alaikum' print “Wa 'alaikum salaam” print 'saya bilang “Python keren”' print “saya bilang 'Python asyik'” print 'baris satu\n baris kedua' print 'baris satu\x 0A baris kedua' print 'baris satu\012baris kedua' # raw string print r'baris satu \n dibaris satu juga' Python, sejak versi 2.0 sudah mengenal string unicode, untuk mendukung internationalization (i18n). Penulisan string unicode menggunakan prefix 'u', untuk menuliskan string tanpa penerjemahan karakter khusus digunakan prefix 'ur'. print u'baris satu\n baris kedua'print u'baris satu\u0 00 Abaris kedua' # unicode raw string print ur'baris satu\u000A baris kedua'
7.3.Boolean
Tipe data boolean hanya memiliki 2 nilai: True dan False.Bahkan hanya True dan False sajalah object yang ada di tipe data Boolean.7.4.Tipe data container
Tipe data container adalah tipe data yang dapat menyimpan referensi ke objek lain sebagai valuenya. Python memiliki tipe data container yang builtin. Tipe data container dalam python dapat menyimpan data yang tipenya berbedabeda. Bahkan data container di python dapat memiliki elemen berupa data container juga.7.4.1.List
List adalah himpunan yang elemennya tersimpan secara berurutan, sebuah list dapat ditambah elemen baru, dikurangi elemennya, atau diubah nilai setiap elemennya, list adalah sequence yang mutable. Elemen list diacu menggunakan indeks integer. List literal didefinisikan menggunakan [] [1,2,3,4,5,6,7,8] [1,'senin',2,'selasa',3,'rabu'] [1,[2,3],4,5,[6,7,8,[9,10,11]]] Berikut ini beberapa operasi yang dapat dilakukan terhadap list: add, remove, slice, del Perhatikan bahwa list melakukan pengecekan index range, pada operasi baca maupun tulis:7.4.2.Tuples
Berbeda dengan list, maka tuples adalah sequence yang immutable. Persamaannya dengan list adalah elemenelemen tuples juga diacu menggunakan indeks integer. Tuple didefinisikan menggunakan (), contoh: (1,2,3,4,5,6,7,8)(1,'senin',2,'selasa',3,'rabu') (1,(2,3),4,5,(6,7,8,(9,10,11))) Berikut ini beberapa operasi yang dapat dilakukan terhadap tupe: slice, packing, unpacking, but you can't del Sebagaimana list, tuples juga melakukan pengecekan range index.