PHP Programming Language Newbie Oriented Workshop Yan Friskantoni Belajarlah sintak dan alur berpikir, jangan menghapal tapi mengerti dan berlatih mempelajari tak kenal henti …
Server Based VS Client Based Script Server Based Script: Script dieksekusi di Web Server Contoh: PHP, ASP, JSP ● Client Based Script: Script di download dan dieksekusi di Web Client Contoh: HTML, VBScript (obsolete), JavaScript (Bukan JAVA) ●
Server Based VS Client Based Script
Script melakukan generate Tampilan, memproses inputan, dll berdasarkan logika pemrograman di Server
Script di download ke client dan web client melakukan eksekusi logika pemrograman
Pemahaman yang tepat kapan Menggunakan dua jenis bahasa tersebut Akan membantu Anda
Persiapan Lingungan Pengembangan ●
Instalasi Web Server Apache
●
Instalasi PHP sebagai Module Apache
●
Setting Konfigurasi Apache untuk penempatan document web
Untuk Untukmempermudah mempermudahpengembangan pengembangankita kita menggunakan menggunakanxampp xampp
XAMPP ●
●
●
●
Paket Instalasi Apache, MySQL, ProFTP dan beberapa paket tambahan lainnya dalam satu kali instalasi Memiliki paket yang bisa di install pada OS Windows maupun Linux Di download melalui website http://www.apachefriends.org/en/xampp.html dan pilih OS yang digunakan
Bukan paket yang dipersiapkan untuk dijalankan pada production stage!
XAMPP Tanpa Installer Di Windows ●
●
●
Download ZIP Archive Extract ke ROOT DIRECTORY ( C:\ atau D:\) Jalankan \xampp\xampp -control.exe
XAMPP Instalasi di Linux (Debian based Distro) ●
●
Download Zip Version Serta Development Package Masuk ke console dan jalankan sebagai root $ sudo tar xvfz xampplinux1.8.1.tar.gz C /opt $ sudo tar xvfz xampplinuxdevel1.8.1.tar.gz C /opt
●
Kemudian jalankan service nya ... $ sudo /opt/lampp/lampp start
Testing Instalasi ●
Jalankan http://localhost dari browser
Testing Source Code Pertama ●
Buka /xampp/apache/conf/httpd.conf *
●
Cari setting nilai dari DocumentRoot
●
Secara default letaknya di /xampp/htdocs/
●
Lalu buat file pada folder tersebut dan berinama sc1.php
●
Jalankan dari browser http://localhost/sc1.php
●
Perhatikan hasil keluarannya * Linux ada di /lampp/etc/httpd.conf
Setting Virtual Host Pada Localhost ●
●
●
Memudahkan Kita dalam melakukan proses development, karena yang diingat adalah domain Kita tidak lagi mengetikkan http://localhost, tapi bisa menggunakan domain seperti http://guestbook.local Agar nama domain tidak ada pada Internet, menggunakan akhiran local atau devel Penggunaan virtual host memungkinkan testing yang lebih comprehensive
Virtual Host ● ●
●
●
●
Matikan xampp service Buat folder latihan di D:\latihan atau /home/<user-active>/latihan Masuk ke /lampp/etc/extra/ atau /xampp/apache/conf/extra/ Copy file httpd-vhost.conf dan paste sebagai httpd-vhost.conf.ORIG pada folder yang sama Edit file httpd-vhost.conf
httpd-vhost.conf
DocumentRoot "C:/xampp/htdocs" ServerName localhost ErrorLog "logs/localhosterror_log" CustomLog "logs/localhostaccess_log" common DocumentRoot "D:/latihan" ServerName latihan.local ErrorLog "logs/latihanerror_log" CustomLog "logs/latihanaccess_log" common Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Require all granted #Order allow,deny #Allow from all
Aktivasi Virtual Host ●
●
●
●
Sekarang untuk melakukan aktivasi Kita harus mengaktifkan virtual host pada file konfigurasi milik apache Buka file /xampp/apache/conf/httpd.conf atau /lampp/etc/httpd.conf Cari bagian yang melakukan include file httpd-vhost.conf Hilangkan tanda # (pagar) agar apache meload setting httpd-vhost.conf
Include etc/extra/httpdvhosts.conf
●
Jalankan kembali service apache ...
Domain Name Entry ●
Pada windows lakukan editing pada file host di C:/Windows/System32/drivers/etc/hosts
●
Pada linux tambahkan isian pada /etc/hosts
●
Tambahkan entry untuk latihan.local
●
127.0.0.1 localhost 127.0.0.1 latihan.local
Testing Virtual Host ●
●
●
File script yang tadi kita buat pertama kali ada pada /xampp/htdocs dipindahkan ke D:\latihan (linux mengikuti) Jalankan dari browser http://latihan.local/sc1.php Perhatikan hasil yang keluar
Owh yeah … Panjang sekali …
Troubleshooting Kenapa punya Saya tidak bisa?
Check kembali setting httpd-vhost.conf dan pastikan sudah diaktifkan di httpd.conf
Adakah Anda masih bersama Saya? Kita baru akan memulai berbasah ria dengan PHP setelah ini!
Sintak PHP ●
●
●
PHP Script akan selalu dimulai setelah tanda , setiap perintah diakhir tanda ; dan bersifat case-sensitive Sebuah file PHP harus memiliki akhiran file .php Buat file sc2.php disimpan di folder latihan yang baru kita buat tadi
Komentar Pada Kode PHP ●
Adalah sebuah praktek pemrograman yang baik untuk memberikan komentar pada bagian program Kita
Variabel Pada PHP ●
●
●
Variabel adalah alamat simbolis yang mewakili nilai dari sesuatu Di PHP bersifat “Loosely Typed Language” artinya Kita tidak perlu mendeklarasikan variabel Type data dari variabel akan ditentukan oleh nilai yang diberikan pada variabel
●
Variabel pada PHP selalu diawali tanda $
●
Variabel harus dimulai karakter atau garis bawah
●
● ●
Nama Variable hanya untuk karakter dan angka atau garis bawah Nama variabel tidak boleh ada spasi Variable dalam PHP case sensitive, artinya karakter besar dan kecil berbeda
Variabel Pada PHP
Simpan di file sc3.php
Variable Scope ●
●
Variable Scope artinya sampai sejauh mana bagian dari kode PHP bisa mengakses variable Ada beberapa jenis variable scope: –
Global
–
Local
–
Static
–
Parameter Banyak kesalahan kode karena tidak jeli dalam mengartikan prinsip variable scop
Variable Scope: Local dan Global "); $jenis_kelamin = "Laki Laki"; function cetakJenisKelamin() { global $jenis_kelamin; // panggil var global $nama = "Upu Rapuy"; // scope local echo "Jenis Kelamin dari \$nama=$nama adalah $jenis_kelamin", HTML_EOL; } cetakJenisKelamin(); $jenis_kelamin = "Perempuan"; echo "Cetak variabel \$nama",HTML_EOL; echo "Jenis Kelamin dari \$nama=$nama adalah $jenis_kelamin", HTML_EOL; ?>
Simpan di file sc4.php
Variable Scope: Local dan Global ●
●
●
Perhatikan variable $nama yang dicoba dicetak di luar fungsi cetakJenisKelamin() Hal ini dikarenakan $nama adalah variabel dengan scope local pada fungsi cetakJenisKelamin() Kalau log error di aktifkan, akan muncul pesan undefined variable, karena variabel $nama tidak dideklarasikan di luar fungsi Bila dalam pengembangan disarankan untuk selalu menyeting php untuk menampilkan log error.
Variable Scope: static "); function jum_pemanggilan() { $n = 0; echo $n,HTML_EOL; $n++; } function jum_pemanggilan_static() { static $n = 1; echo $n,HTML_EOL; $n++; } echo "Panggil 3 kali",HTML_EOL; jum_pemanggilan(); jum_pemanggilan(); jum_pemanggilan(); echo "Panggil yang static 3 kali",HTML_EOL; jum_pemanggilan_static(); jum_pemanggilan_static(); jum_pemanggilan_static(); ?> Simpan di file sc5.php
Variable Scope: static ●
●
●
Perhatikan hasil keluaran untuk yang tidak menggunakan static dan sebaliknya Biasanya kalau fungsi selesai dipanggil maka nilai variable local pada fungsi akan hilang nilainya Variable static akan menyimpan terus nilai tersebut pada fungsi, seperti yang dilihat pada contoh
Variable Scope: paramaters ●
●
Parameter adalah variable scope yang bersifat local terhadap fungsi, nilainya di setting oleh yang memanggil fungsi tersebut Simpan di file sc6.php
Penggunaan Variable String ●
●
●
Digunakan untuk nilai yang memiliki karakter didalamnya Concatenation (penggabungan 2 variable string) dilakukan dengan operator . (titik) Simpan di file sc7.php
Penggunaan Variable String: Double Quote VS Single Quote
●
●
Double Quote akan menyebabkan PHP melakukan parsing terhadap statement variable serta beberapa statement yang memiliki fungsi spesial di PHP Ubah statement pada sc7.php
"); $a = 3; $b = 2; $strNilai = "Nilai penjumlahan tersebut adalah: "; echo "$strNilai $a + $b = " . ($a + $b), HTML_EOL; echo '$strNilai $a + $b = ' . ($a + $b); ?>
Operator dalam PHP
Operator Aritmatika Operator x+y x-y x*y x/y x%y -x x.y
Penjelasan x tambah y x dikurangi y x dikali y x dibagi y x modulus y (sisa pembagian) negasi concatenation
contoh $x + $y $x - $y $x * $y $x / $y $x % $y Ex: 5 % 2 = 1 -$x
Operator dalam PHP
Operator 'Set Nilai' Operator
Statement Pembanding
x=y
Set nilai x diisi nilai dari y
x+=y
x=x+y
x-=y
x=x-y
x/=y
x= x / y
x %= y
x=x%y
x.=y
x=x.y
Operator dalam PHP Operator Increment & Decrement Operator ++x x++ --x x++
Arti Nilai x ditambahkan dulu dengan 1 baru diserahkan Nilai x diserahkan dulu baru ditambahkan denga 1 Nilai x di kurangi 1 baru diserahkan nilainya Nilai x diserahkan dulu baru ditambahkan 1
Operator dalam PHP Operator Pembanding (x = 6 dan y = 3) Op x==y
Arti x Sama dengan y?
Hasil
x===y
x identic dengan y?
false
x!=y x<>y x!==y x>y x
= y x <= y
x tidak sama dengan y? x tidak sama dengan y? X tidak identic dengan y? X lebih besar dari y? X lebih kecil dari y? X lebih besar atau sama dengan y? X lebih kecil atau sama dengan y?
true true true true false true false
false
Operator dalam PHP Operator Logika Op
Arti
x and y
Bernilai true jika x dan y benar
x or y
Bernilai true jika x atau y, atau keduanya bernilai benar True jika x dan y bernilai true
x && y x || y !x x xor y
True jika x atau y, atau keduanya bernilai true Not X artinya true jika x tidak true !(5==6) = true True jika x atau y TAPI TIDAK keduanya bernilai true
Conditional Statement IF ”); function nilaiAngka($nilai) { if( $nilai > 75 ) { echo "$nilai=A", HTML_EOL; } else if( $nilai > 66 && $nilai <= 75 ) { echo "$nilai=B", HTML_EOL; } else if( $nilai > 55 && $nilai <= 66 ) { echo "$nilai=C", HTML_EOL; } else { echo "$nilai=D", HTML_EOL; } } nilaiAngka(45); nilaiAngka(20); nilaiAngka(67); ?>
Simpan di file sc8.php
Conditional Statement IF ”); function nilaiAngka($nilai) { if( $nilai > 75 ) { echo "$nilai=A", HTML_EOL; } else if( $nilai > 66 && $nilai <= 75 ) { echo "$nilai=B", HTML_EOL; } else if( $nilai > 55 && $nilai <= 66 ) { echo "$nilai=C", HTML_EOL; } else { echo "$nilai=D", HTML_EOL; } } nilaiAngka(45); nilaiAngka(20); nilaiAngka(67); ?>
Simpan di file sc8.php
"); function sebutAngkaSatuKeTiga($angka) { $angkaStr = ''; switch($angka) { case 1: $angkaStr = 'satu'; break; case 2: $angkaStr = 'dua'; break; case 3: $angkaStr = 'tiga'; break; default: $angkaStr = "$angka diluar 1 dan 3"; } return $angkaStr; }
Conditional Statement SWITCH
echo sebutAngkaSatuKeTiga(1),HTML_EOL; echo sebutAngkaSatuKeTiga(2),HTML_EOL; echo sebutAngkaSatuKeTiga(3),HTML_EOL; echo sebutAngkaSatuKeTiga(4),HTML_EOL; ?>
Simpan di file sc9.php
ARRAY ●
●
Satu Variable yang menyimpan lebih dari satu nilai Numeric Array : Index nya numeric
Simpan di file sc10.php
ARRAY ●
Associative Array: Indexnya berupa nilai
"); $nilaiMhs['123'] = 67; $nilaiMhs['124'] = 80; $nilaiMhs['223'] = 70; $nilaiMhs['224'] = 98; echo "Nilai Mahasiswa:", HTML_EOL; foreach($nilaiMhs as $key=>$value) { echo "Mahasiswa NRP $key = $value", HTML_EOL; } // cara lain echo "Mahasiswa NRP '224' Memiliki Nilai = {$nilaiMhs['224']}"; ?>
Simpan di file sc11.php
ARRAY ●
Array terdiri dari nama variable dan index
●
Untuk memberi nilai suatu array $suatuArray[4] = 5;
●
Untuk mengambil nilai suatu array echo $suatuArray[4];
●
Nilai suatu variable array bisa merupakan array, dan sub array bisa memiliki array lainnya dan seterusnya; hal ini disebut sebagai multidimensional Array
Multidimensional Array array('nilai'=>67, 'nama'=>'Joseph'), '124' => array('nilai'=>80, 'nama'=>'Maria'), '223' => array('nilai'=>70, 'nama'=>'Felicia'), ); print_r($nilaiMhs); echo "Nilai Mahasiswa:"; foreach($nilaiMhs as $key => $value) { echo "Mahasiswa NRP: $key Nama: " . $value['nama'] . ' Nilai: ' . $value['nilai']; } // cara lainnya echo " Mahasiswa NRP: 123 Nama : {$nilaiMhs['123']['nama']} Nilai: {$nilaiMhs['123']['nilai']}"; ?>
Simpan di file sc12.php
Kepala Anda Mulai Cenat Cenut?
Padahal kita baru permulaan looohhhhh :D :D
LOOPING ●
Eksekusi block dari sebuah kode secara berulang, hingga kondisi tertentu bisa tercapai –
WHILE LOOP
–
DO … WHILE LOOP
–
FOR LOOP
–
FOREACH LOOP
Looping adalah feature paling sering digunakan sekaligus berbahaya
LOOPING WHILE ●
Eksekusi Block Kode selama kondisi = true
Simpan di file sc13.php
While langsung melakukan check terhadap kondisi yang dijadikan persyaratan
Do … While melakukan eksekusi block dulu baru melakukan evaluasi persyaratan
LOOPING FOR ●
●
Untuk for ( insialisasi; kondisi; inkrement ) digunakan apabila kita tahu berapa kali looping dilakukan Untuk foreach( … ) dilakukan untuk mendapatkan nilai array
"); for($i=1;$i<5;$i++) { echo “perulangan $i”,HTML_EOL; } $array = array("1" => "Sistem", "good" => "enough", 5 , 5 => 666, "life" => "Spirit"); foreach( $array as $key => $value ){ echo “$key = $value”,HTML_EOL; }
Perhatikan $key dan $value
?>
Simpan di file sc14.php
Perintah break dan continue ●
Perintah break berguna untuk keluar dari suatu perulangan
"); for($i=1;$i<5;$i++) { echo “perulangan $i”,HTML_EOL; if($i == 3) break; } ?> Simpan di file sc15.php
Perintah break dan continue ●
Perintah continue memerintahkan untuk maju ke iterasi berikutnya "); for($i=1;$i<10;$i++) { if($i % 2 == 0) { continue; } echo $i,HTML_EOL; } ?>
Simpan di file sc16.php
FUNGSI ●
●
●
Merupakan sebuah blok kode yang ditujukan untuk suatu fungsi tertentu Fungsi melalui deklarasi namanya, bisa dipanggil secara berulang oleh bagian lain dari kode, fungsi lain, maupun fungsi tersebut sendiri (recursive) Fungsi dalam PHP memiliki sintak: function namaFungsi(paramaters, … ) { // block kode }
Contoh Fungsi Ganjil Genap "); function isGanjilGenap($nilai) { if( $nilai % 2 == 0 ) echo "$nilai adalah Genap",HTML_EOL; else echo "$nilai adalah Ganjil",HTML_EOL; } isGanjilGenap(4); isGanjilGenap(5); isGanjilGenap(1); ?>
Simpan di file sc17.php
Fungsi Ganjil Genap dengan Kembalian "); function isGanjilGenap($nilai) { $jenis = ''; if( $nilai % 2 == 0 ) $jenis = 'Genap'; else $jenis = 'Ganjil'; return $jenis; } echo "Nilai 4 adalah ".isGanjilGenap(4), " dan nilai 5 adalah ".isGanjilGenap(5); ?>
Simpan di file sc18.php
Fungsi dengan Argument Bernilai Default ●
Parameter pada fungsi memiliki nilai default
"); function cetakJudul($label, $headerTag = 'h1') { echo "<$headerTag>$label$headerTag>",HTML_EOL; } cetakJudul('Pake Default'); cetakJudul('Set Pake Header Besar 2','h2'); cetakJudul('Set Pake Header Besar 3','h3'); cetakJudul('Set Pake Header Besar 4','h4'); cetakJudul('Kembali default'); ?>
Simpan di file sc19.php
LATIHAN ●
Buatlah sebuah program iterasi yang menghasilkan deret angka sebagai berikut :
4 4 9 4 8 8 13 8 12 12 17 12 16 16 21 16 20 20 25 20 Oh my lord of code ….....................................
");
n?
Mu
Jawaban
h k a a d
$step = array( 4, 3, 7, 1 ); $dexStep = 0; for($i = 0; $i < 20; $i++) { echo $i + $step[$dexStep], HTML_EOL; if(++$dexStep > 3) $dexStep = 0; } ?>
Latihan Lagi ●
●
Buatlah sebuah fungsi yang menghitung nilai Fibonaci fibonaci(n) = fibonaci(n-1) + fibonaci(n-2) + ... Ugh … Fibonaci seperti belajar struktur data
Fibonaci, mengapa harus latihan lagi …............
FUNGSI RECURSIVE "); // fibonaci // f(n) = f(n1) + f(n2) + ... + 1 function fibonaci($n) { if($n1 <=0) return 1; return $n + fibonaci($n1); } echo fibonaci(3),HTML_EOL; echo fibonaci(4); ?>
recursive=memanggil dirinya sendiri
Tanya Jawab Belajar Bahasa Pemrograman itu seperti meyakinan diri Anda bahwa makanan yang Anda berikan kepada hewan kesayangan Anda itu memang benar-benar enak Oh my …
SHIT!
No WAY !!!!!!!!!!!!!