Pustaka pihak ketiga menghemat waktu karena masalah yang umum sudah diselesaikan dan diuji oleh pihak lain, tetapi keputusan memasang package yang keliru justru menambah beban perawatan. Topik ini membahas cara menilai package sebelum dipasang, alur integrasi satu package mapan bernama cocur/slugify ke proyek PHP, serta penilaian ulang pilihan tersebut saat upgrade. Setelah membaca, penambahan package baru berlangsung terukur, mulai dari pembacaan kriterianya di Packagist hingga pemanggilan pustakanya dari skrip.
Kriteria mengevaluasi package#
Packagist, repositori package PHP utama yang menjadi sumber unduhan Composer, menampilkan cukup banyak data untuk menilai sebuah package sebelum dipasang. Penilaian yang cermat memperhatikan lima kriteria berikut secara bersamaan, karena masing-masing kriteria mengungkap risiko yang berbeda. Seluruh kriteria tersebut dapat dibaca tanpa memasang apa pun, sehingga keputusan yang kurang tepat dapat dicegah sejak awal.
| Kriteria | Yang diperiksa |
|---|---|
| Popularitas | Jumlah unduhan bulanan dan total pada halaman package di Packagist. |
| Kelangsungan perawatan | Tanggal rilis terakhir, perubahan yang diterima, dan respons terhadap issue (laporan masalah). |
| Lisensi | Jenis lisensi pada kunci license di composer.json milik package. |
| Dependensi yang ditarik | Jumlah package lain yang ikut terpasang bersama package utamanya. |
| Kelengkapan dokumentasi | README, contoh pemakaian, dan catatan perubahan di repositorinya. |
Kriteria yang paling sering disalahpahami adalah popularitas. Jumlah unduhan menunjukkan seberapa luas pemakaian, tetapi angka itu tidak menjamin package masih dirawat, karena unduhan dapat menumpuk sepanjang sejarah package. Package dengan unduhan tinggi pun dapat berhenti dirawat, sementara package dengan unduhan rendah tetap terawat dengan baik, sehingga angka saja tidak pernah cukup.
Lisensi menentukan sah tidaknya pemakaian, sehingga kunci license pada composer.json milik package perlu dibaca sebelum pemasangan. Dependensi yang ditarik baru tampak pada saat pemasangan, dan keluaran composer require menjadi bukti nyata seberapa banyak kode pihak lain yang ikut masuk ke folder vendor/. Kelima kriteria tersebut digunakan untuk memilih package contoh pada bagian berikutnya.
Memasang cocur/slugify#
Package contohnya adalah cocur/slugify, yaitu pustaka kecil yang mengubah teks menjadi slug, yakni teks pendek tanpa spasi yang aman digunakan pada URL dan nama berkas. Package ini mapan, terbukti dari unduhan totalnya yang tercatat puluhan juta, berlisensi MIT, dan tidak menarik dependensi package lain. Pemasangannya menggunakan rentang versi ^4.0, sehingga Composer dapat memilih rilis 4.x mana pun yang tersedia.
# pasang package cocur/slugify dengan rentang versi 4.x
composer require cocur/slugify:^4.0 --no-interaction./composer.json has been created
Running composer update cocur/slugify
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
- Locking cocur/slugify (v4.7.1)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing cocur/slugify (v4.7.1): Extracting archive
Generating autoload files
No security vulnerability advisories found.Keluaran tersebut memuat dua informasi penilaian sekaligus. Baris Lock file operations: 1 install menunjukkan hanya satu package yang dipasang, karena dependensi wajibnya berupa ekstensi PHP dan bukan package lain, sedangkan baris Locking cocur/slugify (v4.7.1) menunjukkan versi persis yang diputuskan Composer. Dua baris itu sudah cukup untuk menilai kriteria dependensi tanpa membuka folder vendor/ satu per satu.
{
"require": {
"cocur/slugify": "^4.0"
}
}Rentang ^4.0 pada composer.json berarti rilis 4.0.0 ke atas sampai sebelum 5.0.0 diterima, sedangkan composer.lock mencatat keputusan yang lebih rinci, yaitu versi v4.7.1 yang baru saja terkunci. Dengan demikian, kriteria lisensi dan dependensi terbukti saat pemasangan, sedangkan popularitas serta kelangsungan perawatan terbaca dari halaman package di Packagist. Dokumentasi package tersedia lengkap di repositorinya, sehingga kriteria kelengkapan dokumentasinya juga terpenuhi.
Memanggil pustaka dari skrip#
Autoloader Composer menjadi satu-satunya titik masuk yang diperlukan untuk memanggil pustaka. Satu baris penyertaan mengaktifkan seluruh pemetaan namespace milik dependensi, sehingga kelas Slugify dapat langsung diinstansiasi tanpa require tambahan. Pola yang sama berlaku untuk setiap package yang mengikuti PSR-4, sehingga penambahan pustaka baru tidak menambah baris penyertaan pada skrip lainnya.
<?php
declare(strict_types=1);
use Cocur\Slugify\Slugify;
require_once 'vendor/autoload.php';
$slugify = new Slugify();
echo $slugify->slugify('Belajar PHP untuk Pengembangan Web'), "\n";
echo $slugify->slugify('Résumé dan Café'), "\n";
echo $slugify->slugify('Laporan Keuangan Q3 2026', ['separator' => '_']), "\n";
echo $slugify->slugify('Belajar PHP untuk Pengembangan Web'), "\n";belajar-php-untuk-pengembangan-web
resume-dan-cafe
laporan_keuangan_q3_2026
belajar-php-untuk-pengembangan-webEmpat baris keluaran memperlihatkan tiga perilaku pustaka. Karakter beraksen diterjemahkan menjadi bentuk polosnya, sehingga Résumé dan Café berubah menjadi resume-dan-cafe. Opsi separator mengubah pemisah kata dari tanda hubung menjadi garis bawah pada baris ketiga. Pemanggilan terakhir mengulang teks pertama dan menghasilkan slug yang sama persis, sehingga teks yang sama selalu berujung pada URL yang sama.
Menilai kembali saat upgrade#
Keputusan memasang package perlu ditinjau ulang setiap kali proyek memperbarui dependensinya. Rentang ^4.0 membuat rilis minor dan perbaikan (patch) dapat diambil tanpa menyunting composer.json, sedangkan composer.lock menjaga versi terpasang tetap stabil sampai pembaruan benar-benar diminta. Dengan pembagian peran itu, proyek tetap stabil di server produksi, sedangkan pembaruan dapat dicoba terlebih dahulu di lingkungan pengembangan.
Perintah composer outdated mendaftar package terpasang yang memiliki versi lebih baru, dan perintah itu cukup dipanggil berkala, misalnya sebelum satu siklus pengembangan dimulai. Apabila daftar itu memuat kenaikan versi mayor, lima kriteria pada awal topik dinilai ulang terlebih dahulu, karena versi mayor dapat mengubah antarmukanya. Catatan perubahan (changelog) versi tujuan dibaca untuk mengetahui bagian yang tidak kompatibel, kemudian rangkaian pengujian proyek dijalankan setelah pembaruan dipasang.
Apabila kriteria penilaian sudah tidak terpenuhi, misalnya perawatan berhenti atau lisensinya berubah, pencarian pengganti dimulai dari kriteria yang sama. Penggantian package dilakukan satu per satu agar perubahan penggunaannya mudah diuji. Kriteria yang sama menjaga keputusan penggantinya tetap terukur, sehingga pilihan baru tidak lebih buruk daripada pilihan lama.
Kesalahan umum#
- Memilih package hanya karena jumlah unduhannya besar. Angka total menumpuk seluruh sejarah dan bisa menjadi warisan masa ketika package masih dirawat. Periksa tanggal rilis terakhir beserta angka unduhan bulanannya sebelum keputusan diambil.
- Memasang package tanpa membaca lisensinya. Package tanpa lisensi yang jelas tidak sah didistribusikan kembali, sehingga proyek yang menyertakannya ikut menanggung risikonya. Kunci
licensepada composer.json milik package dan berkas LICENSE di repositorinya adalah dua tempat yang perlu dibaca. - Mengabaikan dependensi yang ikut terpasang. Satu package kecil yang menarik banyak package lain membuat folder
vendor/membengkak dan menambah peluang konflik versi. Apabila kebutuhannya hanya satu fungsi, pilih package dengan dependensi sesedikit mungkin.
Ringkasan#
- Penilaian package mencakup popularitas, kelangsungan perawatan, lisensi, jumlah dependensi yang ditarik, dan kelengkapan dokumentasi, dan seluruhnya dapat dibaca dari halaman package di Packagist beserta keluaran pemasangannya.
composer require cocur/slugify:^4.0menambahkan rentang versi ke composer.json, mengunci versi v4.7.1 di composer.lock, dan memasang kodenya divendor/.- Pemanggilan pustaka dimulai dari
require_once 'vendor/autoload.php';, kemudian kelasSlugifydiinstansiasi dengan opsi sepertiseparatorsesuai kebutuhan. - Pembaruan dependensi dipantau lewat
composer outdated, dan kriteria penilaian dinilai ulang sebelum kenaikan versi mayor diterima.
Referensi#
- Basic usage — Composer Documentation — Peran composer.json, composer.lock, dan rentang versi dalam pengelolaan dependensi proyek.
- Packagist — Repositori package PHP yang menjadi sumber pencarian, unduhan, dan statistik pemakaian.
- cocur/slugify — Packagist — Halaman package contoh yang memuat statistik unduhan, lisensi, dan daftar versinya.
- cocur/slugify — GitHub — Repositori resmi package slugify beserta dokumentasi pemakaiannya.