Membuat Service Dengan PHP Murni (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 simple service menggunakan PHP.
3. Mampu mengakses web service.


Struktur Folder

Buat struktur folder seperti berikut :


Buat file index.php

Masukan code :
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
require __DIR__."/core/Bootstrap.php";

File ini untuk memanggil file Bootstrap.php dan menjalankan fungsi - fungsinya ketika dipanggil.

Buat file config/Routes.php

Masukan code :
<?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 controllers/Home.php

Masukan code :
<?php
$url =$_SERVER['REQUEST_URI'];
$urlArr = explode("index.php", $url);
if (count($urlArr)>=2) {
    $url = $urlArr[1];
}
// if use php —S localhost;8000
if (strpos($url, "/") !== 0) {
    $url = "/$url";
}
if ($url == '/'  && $_SERVER['REQUEST_METHOD'] =='GET') {
    header('Content-Type: application/json');
    echo json_encode(array('service name'=>'PHP Service App','status'=>'Running'));
}
File ini sebagai controller dari http dimana didalamnya jika mengakses url "/" maka akan menampilkan response json dengan response bodynya.

Buat file controller/Users.php

Masukan code :

<?php 
$url = $_SERVER['REQUEST_URI'];
$urlArr = explode("index.php", $url);
if (count($urlArr) >= 2) {
$url = $urlArr[1];
// if use php —S localhost;8000
if (strpos($url, "/") !== 0) {
$url = "/$ur1";
// 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' => 'sulawesiani@gmail.com', 'address'=> 'Makasar', 'gender' => 'Perempuan'),
array('id'=>5, 'name' => 'Papuani', 'email' => 'papuani@gmail.com', 'address. => Jayapura', 'gender' => 'Perempuan'),
);
header('Content-Type: application/json');
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' => 'sumatrana@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' => 'sulawesiani@gmail.com', 'address' => 'Makasar', 'gender' => 'Perempuan'),
'5' => array('id' => 5, 'name' => 'Papuani', 'email' => 'papuani@gmail.com', 'address'=> 'Jayapura', 'gender' => 'Perempuan'),
);
$user = $users[$matches[1]];
header('Content-Type: application/json');
echo json_encode($user);
}

File ini sebagai controller, jika mengakses url '/users' maka akan menampilkan response list user yang di definisikan, dan jika mengakses url 'users/ID', maka akan menampilkan response user berdasarkan ID nya.

Buat file core/Bootstrap.php

Masukan code :
<?php
    require __DIR__.'/Router.php';
    require __DIR__.'/../config/Routes.php';
    $router = new Router;
    $router->setRoutes($routes);
    $url = $_SERVER['REQUEST_URI'];
 
    require __DIR__."/../controllers/".$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 :
<?php
    class Router
    {
        private $routes = [];
        public function setRoutes($routes)
        {
            $this->routes = $routes;
        }
        public function getFileName($url)
        {
            foreach ($this->routes as $route =>$file) {
                if (strpos($url, $route) !== false) {
                    return $file;
                }
            }
        }
    }

file ini sebuah class untuk fungsi mendaftarkan routes dan fungsi mendapatkan file berdasarkan url yang di panggil.

Jika sudah selesai jalankan aplikasinya.

a. Jika menggunakan XAMPP / WAMP / MAMP simpan project folder di htdocs
b. Pada browser buka localhost/php-service-app/index.php/,
c  Jika menggunakan port maka localhost:{port}/php-service-app/index.php
d. Untuk selanjutnya kita akan menggunakan tools dalam mengakses API, tools nya adalah aplikasi Postman


Untuk mengecheck service yang sudah dibuat bisa menggunakan posman https://www.getpostman.com/ 

Jika suda terinstall lakukan contoh seperti dibawah ini :
Disini saya menggunakan port.

localhost:8081/php-service-app/index.php












localhost:8081/php-service-app/index.php/users















localhost:8081/php-service-app/index.php/users/1

Labels: PHP
0 Komentar untuk "Membuat Service Dengan PHP Murni (Tanpa menggunakan framework)"

Back To Top