Tutorial simple PHP kali akan membahas membuat Web service data Mahasiswa simple dengan PDO ( PHP Data Object). Sedikit tambahan, bahwa Web service itu berguna untuk mengakses/mengambil data dari Aplikasi luar tentunya dengan permission atau hak akses.
Ok langsung saja kita mulai . Pertama siapkan databse dan table nya (mySQL)
DB Name : test , Table : mhs
kira begini penampakan table nya. ( buat sendiri jg gampang kn :D)
DB Name : test , Table : mhs
kira begini penampakan table nya. ( buat sendiri jg gampang kn :D)
id | nama | alamat | umur |
1 | Ganjar | St. Paris 89, Jakarta |
24 |
2 | Mimin |
Jl. Sudnari asri no 90,Bandung |
22 |
- koneksi.php
- mhs.php
- web_service.php
- akses_web_service.php
taruh file-file diatas di 1 folder misalnya 'web-service' di htdocs.
Sekarang kita buat satu-satu kode nya.
koneksi.php
class Koneksi {
//DB name : test
protected $dns = "mysql:host=localhost;dbname=test"; protected $db_user = "root";
protected $db_pass = "";
protected $konek = "";
public function getKon() {
try{
$db = new PDO($this->dns,$this->db_user,$this->db_pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if($db===FALSE){
throw new Exception("Koneksi Gagal");
}else{
$this->konek = $db;
}
}catch(Exception $e){
echo "Error : ".$e->getMessage();
}
return $this->konek;
}
public function closeKon(){
$this->konek = NULL; //diskonek Koneksi
}
}
/*
Kita sekalian buat Class active record simple
untuk fetch data ke DB */
class ActiveRecord extends Koneksi{
public function fetchObject($sql){
$clone = array();
try{
$data = $this->getKon()->prepare($sql);
$data->setFetchMode(PDO::FETCH_INTO,$this);
$data->execute();
/* krena fetch ingin sbg Object,
maka kita hrus clone hasilnya */
while($result = $data->fetch()){
$clone[] = clone $result;
}
$this->closeKon();
}catch(PDOException $e){
echo $e->getMessage();
}
return $clone;
}
}
mhs.php
require_once "koneksi.php";
class MhsWebService{
protected $name;
protected $umur;
//misal API yg dikasih utk client
protected $API = 'khss8363621';
public function setName($name){
$this->name = $name;
}
public function getName(){
return $this->name;
}
public function setUmur($umur){
$this->umur = $umur;
}
public function getUmur(){
return $this->umur;
}
public function validateAPI($api){
if($this->API !== $api)
return false;
return true;
}
public function getMhs(){
$objAr= new ActiveRecord();
/*Query blm pake bind params, silahkan edit sendiri*/
$sql = "SELECT * FROM mhs WHERE 1=1 ";
if($this->getName()){
$sql .=" AND nama LIKE '%{$this->getName()}%' ";
}
if($this->getUmur()){
$sql .=" AND umur LIKE '%{$this->getUmur()}%' ";
}
return $objAr->fetchObject($sql);
}
}
web_service.php
validateAPI($s_API)){
//kirim params" nya
$mhs->setName($s_name);
$mhs->setUmur($s_umur);
$data = $mhs->getMhs();
//print_r($data);
reset($data);
$i=0;
//saya pake while, klo mau foreach silahkan :D
while(list(,$r) = each($data)){
$hasil[$i]['nama'] = $r->nama;
$hasil[$i]['umur'] = $r->umur;
$hasil[$i]['alamat'] = $r->alamat;
++$i;
}
//hanya utk flag saja
$hasil['status'] = TRUE;
}else{
$hasil['status'] = FALSE;
}
echo json_encode($hasil);
?>
akses_web_service.php
MHS Web Service
$s_name,
'umur' => $s_umur
);
$data = http_build_query($fields);
$context = stream_context_create(array(
'http' => array(
'method' => 'GET',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $data,
)
));
$result = file_get_contents($url, false, $context);
//decode json nya ke array
$vr = json_decode($result,true);
echo "";
print_r($vr);
echo "
";
}
?>
Di atas terlihat saya pakai file_get_contents , silahkan gunakan method yg lain jika perlu.
Output dari program diatas seperti ini

Masih dalam Array biasa, silahkan proses sendiri :D
Akses aplikasinya di browser
localhost/web-service/akses_web_service.php
Begitulah kira-kira :D
Happy Coding !!!!