3
Instalasi dan Publikasi Config
Paket twintylabs/laravel-userstamps dipasang lewat Composer, lalu berkas config config/userstamps.php dipublikasikan dengan tag userstamps-config. README hanya mencantumkan dua perintah: composer require dan vendor:publish README.md:12-141 README.md:16-202.
Syarat Versi
Blok require di composer.json memuat tiga dependency inti composer.json:25-293.
| Dependency | Constraint | Sumber |
|---|---|---|
php | ^8.3 | composer.json:25-293 |
illuminate/contracts | `^11.0 | |
spatie/laravel-package-tools | ^1.92 | composer.json:25-293 |
Dependency terakhir wajib ada karena UserstampsServiceProvider mewarisi PackageServiceProvider dari paket Spatie tersebut src/UserstampsServiceProvider.php:5-94.
Perintah Instalasi
composer require TwintyLabs/laravel-userstamps
php artisan vendor:publish --tag="userstamps-config"
Perintah pertama dan kedua di atas dikutip apa adanya dari README README.md:12-141 README.md:16-202.
Alur Instalasi sampai Siap Dipakai
graph TD
A["composer require TwintyLabs/laravel-userstamps"] --> B["Composer memetakan namespace PSR-4 Userstamps ke direktori src/"]
B --> C["Laravel membaca extra.laravel: providers dan aliases"]
C --> D["UserstampsServiceProvider::configurePackage"]
D --> E["hasConfigFile: berkas config userstamps didaftarkan"]
E --> F["php artisan vendor:publish --tag=userstamps-config"]
F --> G["config/userstamps.php tersalin ke aplikasi"]
D --> H["bootingPackage: UserstampsMacro::register"]
G --> I["Paket siap dipakai"]
H --> I
style A fill:#2d7d46,color:#fff
style B fill:#8b5cf6,color:#fff
style C fill:#8b5cf6,color:#fff
style D fill:#f59e0b,color:#000
style E fill:#f59e0b,color:#000
style F fill:#f59e0b,color:#000
style G fill:#f59e0b,color:#000
style I fill:#2d7d46,color:#fff
%% fig: Urutan instalasi sampai paket siap dipakai
%% desc: Composer memasang paket dan namespace PSR-4, Laravel menemukan provider lewat extra.laravel, config dipublikasikan lewat tag userstamps-config, dan macro Blueprint didaftarkan saat boot.Nama paket di Composer adalah twintylabs/laravel-userstamps composer.json:2-35. Autoload PSR-4 memetakan namespace TwintyLabs\Userstamps\ ke direktori src/ composer.json:43-476.
Artefak yang terpasang bisa ditelusuri langsung dari repository:
| Artefak | Nilai di repository | Sumber |
|---|---|---|
| Nama paket Composer | twintylabs/laravel-userstamps | composer.json:2-35 |
| Autoload PSR-4 | namespace TwintyLabs\Userstamps\ ke src/ | composer.json:43-476 |
| Provider terdaftar | TwintyLabs\Userstamps\UserstampsServiceProvider | composer.json:69-737 |
| Alias container | Userstamps ke TwintyLabs\Userstamps\Facades\Userstamps | composer.json:74-778 |
| Tag publish config | userstamps-config | README.md:16-202 |
| Berkas config paket | config/userstamps.php | config/userstamps.php:1-39 |
Provider dan alias didaftarkan lewat extra.laravel, sehingga aplikasi tidak perlu menambahkan entri manual composer.json:69-737 composer.json:74-778.
Apa yang Dikerjakan Service Provider
configurePackage memberi nama paket laravel-userstamps dan mendaftarkan berkas config bernama userstamps src/UserstampsServiceProvider.php:1810. Tag userstamps-config yang dipakai README sejalan dengan nama config tersebut README.md:16-202.
Setelah config terdaftar, bootingPackage memanggil (new UserstampsMacro)->register() src/UserstampsServiceProvider.php:21-2411. Macro Blueprint baru tersedia untuk migration setelah langkah ini; rincian macro dan pemakaiannya ada di Lapisan Schema dan Macro Blueprint.
Isi Berkas Config Hasil Publish
Berkas config/userstamps.php diawali use App\Models\User; lalu mengembalikan array konfigurasi config/userstamps.php:1-39. Kunci pertama adalah is_using_morph dengan nilai false config/userstamps.php:5-1812, dan kunci terakhir with_trashed juga bernilai false config/userstamps.php:112-12113. Di antaranya ada users_model yang default-nya User::class config/userstamps.php:35-4814.
README menandai langkah publish sebagai opsional: kalimatnya berbunyi You can publish the config file with: README.md:16-202. Uraian tiap kunci beserta artinya ada di Referensi Opsi Konfigurasi, sedangkan pengaruhnya ke bentuk kolom dibahas di Migrasi dan Kolom Userstamps.
Kapan Config Dibaca
Config tidak hanya dibaca saat boot. Ketika migration memanggil macro userstamps, addUserIdColumn membaca is_using_morph, users_table_id_column_type, users_table, dan users_table_id_column_name src/Database/Schema/Macros/UserstampsMacro.php:19-2215. Nilai tipe kolom itu dipilih lewat ekspresi match yang menentukan kolom mana yang dibuat src/Database/Schema/Macros/UserstampsMacro.php:24-4016.
graph LR
P["config/userstamps.php diedit sebelum migrate"] --> M["migration memanggil Blueprint::userstamps"]
M --> R["addUserIdColumn membaca is_using_morph dan users_table_id_column_type"]
R --> K["kolom created_by_id dan updated_by_id dibuat sesuai match"]
K --> S["skema tabel cocok dengan config"]
L["config diubah setelah migrate"] --> T["kolom yang sudah dibuat tidak berubah"]
style P fill:#f59e0b,color:#000
style R fill:#f59e0b,color:#000
style S fill:#2d7d46,color:#fff
style L fill:#dc2626,color:#fff
style T fill:#dc2626,color:#fff
%% fig: Waktu baca config menentukan bentuk kolom
%% desc: Nilai config dibaca saat migration memanggil macro Blueprint, sehingga perubahan setelah migrate tidak mengubah kolom yang sudah terbentuk.⚠️ Publikasikan dan ubah
is_using_morphsebelum menjalankanphp artisan migrate. Berkas config memperingatkanPlease make sure to enable or disable this BEFORE running migrations, karena nilainya memengaruhi cara kolom relasi dibuat config/userstamps.php:13-1517. Pengaruh tiap tipe ID ke kolom dibahas di Mode Morph dan Tipe Kolom ID.
Catatan tentang Alias Userstamps
composer.json mendaftarkan alias container Userstamps ke TwintyLabs\Userstamps\Facades\Userstamps composer.json:74-778. Karena autoload PSR-4 memetakan namespace itu ke src/ composer.json:43-476, kelas tersebut seharusnya berada di src/Facades/Userstamps.php; berkas itu tidak ada pada commit ini, dan src/Userstamps.php hanya berisi kelas kosong src/Userstamps.php:1-518.
Jangan bergantung pada alias itu. Jalur yang benar adalah memakai trait HasUserstamps pada model seperti dijelaskan di Penggunaan pada Model Eloquent.