Mengenal PSR Sebuah Standar yang Bikin PHP Lebih Modern

image 2 - Mengenal PSR Sebuah Standar yang Bikin PHP Lebih Modern

PSR adalah singkatan dari PHP Standard Recommendation. Ini adalah kumpulan standar coding yang dibuat oleh organisasi PHP-FIG (PHP Framework Interop Group) untuk mendorong interoperabilitas antar framework dan library di dunia PHP. Berikut PSR yang sering digunakan :

Kode PSRNama StandarFungsi Singkat
PSR-1Basic Coding StandardAturan dasar penulisan kode (penamaan class, file, dll)
PSR-2Coding Style GuideGaya penulisan kode yang rapi dan konsisten
PSR-4Autoloading StandardStandar cara memanggil class otomatis berdasarkan struktur folder
PSR-3Logger InterfaceStandar untuk sistem logging
PSR-7HTTP Message InterfaceStruktur standar untuk permintaan dan respons HTTP
PSR-12Extended Coding Style GuidePengembangan dari PSR-2 dengan aturan yang lebih lengkap

Tujuan PSR adalah agar kode dari berbagai framework (seperti Laravel, Symfony, CodeIgniter, dll) bisa bekerja sama atau saling dipahami dengan mudah.

Berikut adalah contoh-contoh semua PSR populer yang sering digunakan dalam pengembangan aplikasi PHP modern. Kita akan membahas yang paling relevan: PSR-1, PSR-2, PSR-4, PSR-3, PSR-7, dan PSR-12. (PSR lainnya lebih teknis atau jarang digunakan secara langsung.)


PSR-1: Basic Coding Standard

Tujuan: Menstandarisasi penamaan class, file, dan penggunaan namespace.

<?php

namespace App\Models;

class UserModel {
    public function getData() {
        return 'Data pengguna';
    }
}
  • Class harus PascalCase
  • File harus sama dengan nama class: UserModel.php
  • Gunakan namespace

PSR-2: Coding Style Guide

Tujuan: Standar penulisan kode agar rapi dan konsisten.

<?php

namespace App\Controllers;

class UserController extends BaseController
{
    public function index()
    {
        $data = ['title' => 'User Page'];

        return view('user/index', $data);
    }
}
  • Kurung kurawal { berada di baris baru
  • Indentasi 4 spasi (bukan tab)
  • Spasi setelah koma dan di sekitar operator =

Catatan: PSR-2 sekarang sudah diperbarui oleh PSR-12.


PSR-4: Autoloading Standard

Tujuan: Class bisa dipanggil otomatis berdasarkan namespace dan struktur folder.

// File: app/Libraries/MyLibrary.php

namespace App\Libraries;

class MyLibrary {
    public function hello() {
        return "Hello World!";
    }
}

Jika kamu pakai Composer, composer.json harus ada ini:

"autoload": {
    "psr-4": {
        "App\\": "app/"
    }
}

Dengan begitu, kamu bisa langsung pakai class ini tanpa require:

use App\Libraries\MyLibrary;

$lib = new MyLibrary();
echo $lib->hello();

PSR-3: Logger Interface

Tujuan: Standar untuk sistem logging (misalnya log error atau aktivitas).

use Psr\Log\LoggerInterface;

class UserService {
    protected $logger;

    public function __construct(LoggerInterface $logger) {
        $this->logger = $logger;
    }

    public function login($user) {
        $this->logger->info("User login: " . $user);
    }
}

Library seperti Monolog sudah menerapkan PSR-3.


PSR-7: HTTP Message Interface

Tujuan: Standar cara menangani request & response HTTP, terutama untuk framework atau middleware.

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;

function handleRequest(ServerRequestInterface $request, ResponseInterface $response)
{
    $name = $request->getQueryParams()['name'] ?? 'Guest';

    $response->getBody()->write("Hello, $name!");

    return $response;
}

Framework seperti Slim, Laravel, atau Symfony menggunakan standar ini untuk HTTP message handling.


PSR-12: Extended Coding Style

PSR-12 adalah versi lanjutan dan lebih ketat dari PSR-2.

<?php

declare(strict_types=1);

namespace App\Services;

use App\Models\User;
use Exception;

class AuthService
{
    public function login(string $email, string $password): bool
    {
        if (empty($email) || empty($password)) {
            throw new Exception('Email dan Password wajib diisi.');
        }

        // logic login...
        return true;
    }
}

Beberapa poin tambahan dari PSR-12:

  • Harus pakai declare(strict_types=1); di baris pertama
  • Setiap use hanya untuk 1 baris (tidak digabung)
  • Return type pakai : bool, : string, dll

Kalau kamu pakai CodeIgniter 4 atau framework modern lain, kamu secara otomatis akan terpapar dan terbantu dengan PSR, terutama PSR-4, PSR-12, dan PSR-3.

Selamat mencoba!

You cannot copy content of this page