Menggunakan package/library Eloquent database tanpa Laravel bisa diterapkan pada Slim4 untuk membuat fashion store API. Slim4 merupakan salah satu PHP micro framework, sedangkan Eloquent merupakan salah satu library object-relational mapper (ORM) pada Laravel. Slim4 dengan ukuran file yang kecil tidak memiliki library database bisa dipasangkan dengan Eloquent Laravel. ukuran file yang kecil, Slim4 juga dapat digunakan untuk membuat full-featured web app. Namun pada tutorial kali ini akan dibahas Slim4 sebagai PHP backend untuk membuat API. Pada artikel Slim4 Tutorial: 1 Database Eloquent tanpa Laravel akan dibahas bagaimana melakukan instalasi sampai dengan menggunakan Eloquent.
Instalasi Slim4
Instalasi Slim4 termasuk cukup sederhana, beberapa aplikasi yang diperlukan sebelum melakukan instalasi adalah apache2, php7.4 dan composer. Perintah yang digunakan untuk melakukan instalasi sebagai berikut:
mkdir fashion-store-slim4
cd fashion-store-slim4
composer require slim/slim:"4.*"
composer require slim/psr7
Struktur direktori setelah berhasil melakukan instalasi:
Contoh nama database yang akan digunakan adalah fashion_store_db dengan nama tabel user. Contoh gambar tabel user sebagai berikut:
MySQL script untuk membuat tabel seperti diatas sebagai berikut:
CREATE TABLE IF NOT EXISTS `fashion_store_db`.`user` (
`id` INT NOT NULL AUTO_INCREMENT,
`email` VARCHAR(100) NOT NULL,
`password` VARCHAR(100) NULL,
`name` VARCHAR(100) NULL,
`level` INT NULL,
`status` INT NULL,
`created_at` DATETIME NULL,
`updated_at` DATETIME NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `email_UNIQUE` (`email` ASC) VISIBLE)
ENGINE = InnoDB;
PHP Slim4 Tutorial: 1 Database Eloquent tanpa Laravel
Ada banyak pilihan packages yang bisa digunakan sebagai koneksi database pada Slim4, salah satunya adalah Eloquent milik Laravel. Eloquent sendiri bersifat standalone dimana package tersebut bisa digunakan tanpa harus menginstal Laravel secara keseluruhan. Menginstal Eloquent pada Slim4 bisa dilakukan dengan cara:
composer require illuminate/database:*
Setelah composer berhasil menginstal package yang dibutuhkan, selanjutnya buat file pada config/settings.php dan config/dependencies.php.
File settings.php akan digunakan untuk menyimpan pengaturan terkait aplikasi. Contoh code yang digunakan sebagai settings:
<?php
return [
'db' => [
'driver' => 'mysql',
'host' => '127.0.0.1',
'database' => 'database',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
'collation' => 'utf8_general_ci',
]
];
Untuk bisa menggunakan Eloquent pada Slim4 diperlukan melakukan inisialisasi database terlebih dahulu. Inisialisasi akan dilakukan pada file config/dependencies.php.
<?php
$capsule = new \Illuminate\Database\Capsule\Manager;
$capsule->addConnection($settings['db']);
$capsule->bootEloquent();
$capsule->setAsGlobal();
Setelah melakukan inisialisasi database, selanjutnya perlu menambahkan perintah untuk melakukan autoload App pada composer.json. Fungsi dari autoload App digunakan sebagai untuk menampung file-file yang dibutuhkan aplikasi, sebagai contoh pada tutorial ini adalah Models. File model yang akan digunakan akan diletakkan pada direktori src/Models. Tambahkan autoload pada composer.json sebagai berikut:
{
...
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
Kemudian generate ulang file dengan perintah composer:
composer dump-autoload
Buat model User buat file pada src/Models/User.php
Mengakses model User
Agar Eloquent database tanpa Laravel dapat digunakan pada Slim4, dimana model User bisa mengakses database secara langsung dan menggunakan sintak-sintak yang ada pada Eloquent milik Laravel, serta menurunkan fungsi-fungsi yang ada pada Eloquent bisa dilakukan dengan melakukan extends class dari anak ke induknya, sebagai contoh class Models User melakukan extends terhadap class Eloquent Model. Attribute $table digunakan untuk menandakan nama tabel yang digunakan oleh model tersebut.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $table = 'user';
protected $primaryKey = 'id';
}
Langkah selanjutnya yaitu membuat akses route pada Slim4. Buat file public/index.php dan public/.htaccess dengan struktur direktori sebagai berikut:
Sebelum mengakses route yang akan dipanggil, terlebih dahulu perlu mengaktifkan rewrite module pada apache2. Hal ini perlu dilakukan untuk menghilangkan nama file index.php pada route. Contoh mengaktifkan rewrite module dengan terminal:
a2enmod rewrite
Tambahkan kode pada .htaccess untuk melakukan rewrite terhadap file index.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
Route yang digunakan untuk mengambil data user sebagai berikut:
<?php
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;
use App\Models\User;
require __DIR__ . '/../vendor/autoload.php';
$app = AppFactory::create();
$app->setBasePath('/fashion-store-slim4/public');
$settings = require __DIR__ . '/../config/settings.php';
require __DIR__ . '/../config/dependencies.php';
$app->get('/user', function (Request $request, Response $response) {
$user = User::all();
$data = json_encode($user);
$response->getBody()->write($data);
return $response
->withHeader('Content-Type', 'application/json')
->withStatus(200);
});
$app->run();
Uji coba bisa dilakukan dengan menggunakan aplikasi Postman dengan mengakses alamat localhost/fashion-store-slim4/public/user
Code lengkap dapat dilihat melalui Github. Daftar lengkap tutorial fashion store API bisa dilihat melalui link ini.
Pingback: Slim4 Fashion Store API: 2 Register user dan validasi request – PerangkatLunakKu
Pingback: Tutorial PHP Backend Slim4 - PerangkatLunakKu
Pingback: Slim4 Tutorial API: 2 Validasi request - PerangkatLunakKu