Membuat Simple PHP Service App
Hallo, pHappier. Kali ini kita akan membuat service menggunakan PHP murni tanpa menggunakan framework. Ini bisa jadi latihan untuk kita lebih mengenal dulu native php untuk selanjutnya kita melangkah ke PHP Framework seperti CI, Laravel, dll.
Ini adalah daftar endpoint dan contoh response yang tersedia dalam web service yang akan kita buat :
Struktur Folder
Berikut isi kode dari tiap masing-masing filenya :
Index.php
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
require __DIR__ . "/core/Bootstrap.php";
config/Routes.php
<?php
$routes = [
'/users' => 'Users.php',
'/' => 'Home.php'
];
controller/Home.php
<?php
$url = $_SERVER['REQUEST_URI'];
$urlArr = explode('index.php', $url);
if (count($urlArr) >= 2)
$url = $urlArr[1];
if (strpos($url, '/')
!== 0) $url = '/$url';
if ($url == '/' && $_SERVER['REQUEST_METHOD'] == 'GET')
echo json_encode(array(
'service_name' => 'PHP Service App',
'status' => 'Running'
));
controller/Users.php
<?php
$url = $_SERVER['REQUEST_URI'];
$urlArr = explode('index.php', $url);
if (count($urlArr) >= 2) $url = $urlArr[1];
if (strpos($url, '/') !== 0)
$url = '.$url';
if ($url == '/users' && $_SERVER['REQUEST_METHOD'] == 'GET') {
$users = array(
array(
'id' => 1,
'name' => 'Sumatrana',
'email' => 'sumantrana@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'
));
echo json_encode($users);
}
if (preg_match("/users\/([0-9])+/", $url, $matches) && $_SERVER['REQUEST_METHOD'] == 'GET') {
$users = array(
'1' => array(
'id' => 1,
'name' => 'Sumatrana',
'email' => 'sumantrana@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]];
echo json_encode($user);
}
core/Bootstrap.php
<?php
require __DIR__ . '/Router.php';
require __DIR__ . '/../config/Routes.php';
$router = new Router;
$router->setRoutes($router);
$url = $_SERVER['REQUEST_URI'];
require __DIR__ . '/../controller/' . $router->getFileName($url);
core/Router.php
<?php
class Router
{
private $routes = [];
function setRoutes(array $routers)
{
$this->routes = $routers;
}
function getFileName(string $url)
{
foreach ($this->routes as $route => $file) {
if (strpos($url, $route) !== false)
return $file;
}
}
}
Untuk menjalan aplikasi anda dapat menggunakan command line php dengan cara menjalankan php -S localhost:8000 di dalam root folder project, atau jika menggunakan web server seperti XAMPP/WAMP/MAMP simpan folder project pada htdocs web server dan dapat di akses melalui localhost/php-service-app/index.php