Membuat Web Service Menggunakan PHP Native (Tanpa Menggunakan Framework)

Simple PHP Service App

Kita akan membuat service menggunakan PHP murni tanpa menggunakan framework. Tujuan praktek ini adalah untuk:
1. Memahami cara kerja web service
2. Mampu membuat simpel service menggunakan PHP
3. Mampu mengakses web service

Struktur Folder

Dibawah ini adalah struktur folder dari web service app yang akan kita buat.





















Buat file index.php
Masukan code dibawah ini
<?php
ini_set('display_errors'1);
error_reporting(E_ALL);
require __DIR__."/core/Bootstrap.php";
?>

Buat file config/Routes.php
Masukan code dibawah ini
<?php
$routes =[
    '/users' => 'Users.php',
    '/' => 'Home.php',
];
File ini untuk konfigurasi routing / alamat url, dimana file ini jika url nya di panggil. Maka akan memangil Users.php dan menjalankan fungsi nya.

Buat file controller/Home.php
Masukan code dibawah ini
<?php
$url = $_SERVER['REQUEST_URI'];

//if use folder path
$urlArr = explode("index.php"$url);
if (count($urlArr) >= 2){
    $url = $urlArr[1];
}

//if use php -S localhost:8000
if(strpos($url"/") !== 0){
    $url = "/$url";
}

//untuk menghandle url
if ($url == '/' && $_SERVER['REQUEST_METHOD'] == 'GET'){
    echo json_encode(array('service_name' => 'PHP Service App',
'status' => 'Running'));
}
?>

Buat file controller/Users.php
Masukan code dibawah ini
<?php
$url = $_SERVER['REQUEST_URI'];
$urlArr = explode("index.php"$url);
if (count($urlArr) >= 2){
    $url = $urlArr[1];
}
if(strpos($url"/") !== 0){
    $url = "/$url";
}

//untuk menghandle url /users
if($url == '/users' && $_SERVER['REQUEST_METHOD'] == 'GET'){
    $users = array(
        array('id' => 1'name' => 'Sumatrana',
'email' => 'sumatrana@gmail.com'
'address' => 'Padang''gender' => 'Laki-laki' ),
        array('id' => 2'name' => 'Jawarianto',
'email' => 'jawarianto@gmail.com'
'address' => 'Cimahi''gender' => 'Laki-laki'),
        array('id' => 3'name' => 'Kalimantanio'
'email' => 'kalimantanio@gmail.com''address' => 'Samarinda'
'gender' => 'Laki-laki'),
        array('id' => 4'name' => 'Sulawesiani',
'email' => 'sulawesiano@gmail.com',
'address' => 'Makasar''gender' => 'Perempuan'),
        array('id' => 5'name' => 'Papuani''email' => 'papuani@gmail.com'
'address' => 'Jayapura''gender' => 'Perempuan')
    );
    echo json_encode($users);
}

//untuk menghandle url /users/{ID}
if(preg_match("/users\/([0-9])+/"$url$matches
&& $_SERVER['REQUEST_METHOD'] == 'GET'){
   $users = array
       '1' => array('id' => 1'name' => 'Sumatrana'
'email' => 'sumatriana@gmail.com''address' => 'Padang'
'gender' => 'Laki-laki'),
       '2' => array('id' => 2'name' => 'Jawarianto'
'email' => 'jawarianto@gmail.com''address' => 'Cimahi'
'gender' => 'Laki-laki'),
       '3' => array('id' => 3'name' => 'Kalimantanio'
'email' => 'kalimantanio@gmail.com''address' => 'Samarinda'
'gender' => 'Laki-laki'),
       '4' => array('id' => 4'name' => 'Sulawesiani'
'email' => 'seulawesiani@gmail.com''address' => 'Makasar'
'gender' => 'Perempuan'),
       '5' => array('id' => 5'name' => 'Papuani'
'email' => 'papuani@gmail.com''address' => 'Jayapura'
'gender' => 'Perempuan'),
   );
   $user = $users[$matches [1]];
   echo json_encode($user);
}
?>

Buat file core/Bootstrap.php
Masukan code dibawah ini
<?php
require __DIR__.'/Router.php';
require __DIR__.'/../config/Routes.php';
$router = new Router;
$router->setRoutes($routes);
$url = $_SERVER['REQUEST_URI'];
require __DIR__."/../controller/".$router->getFilename($url);
?>
File ini dijalankan pada saat index.php dipanggil. Di dalamnya memanggil file Router.php dan Routes.php dan mengset new routernya.

Buat file core/Router.php
Masukan code dibawah ini

<?php
class Router {
    private $routes = [];
    function setRoutes($routes){
        $this->routes = $routes;
    }

    function getFilename($url){
        foreach($this->routes as $route => $file){
            if(strpos($url$route) !== false){
                return $file;
            }
        }
    }
}

Setelah selesai membuat semua codingan di atas, sekarang tinggal mencoba untuk dijalankan.
Selanjutnya cara untuk menjalankan aplikasi tersebut.
a. Simpan project pada folder htdocs (jika menggunakan XAMPP / WAMP / MAMP)
b. Pada browser buka localhost/{lokasi penyimpanan folder}/php-services-app/index.php
    jika menggunakan port maka  localhost:{port}/{lokasi penyimpanan folder}/php-services-app/index.php
c. Untuk selanjutnya kita akan menggunakan tools dalam mengakses API dengan menggunakan Postman

Jika belum memiliki Postman bisa download  di sini
Apabila sudah terinstall, lakukan pada contoh di bawah ini:

Masukan URL localhost/{lokasi penyimpanan folder}/php-services-app/index.php














Selanjutnya localhost/{lokasi penyimpanan folder}/php-services-app/index.php/users
















localhost/{lokasi penyimpanan folder}/php-services-app/index.php/users/1