Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Laravel 5
Code

Manajemen Paket di Laravel

by
Difficulty:IntermediateLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by Hasyemi Rafsanjani (you can also view the original English article)

Di artikel ini, kita akan mengeksplorasi fitur manajemen paket pada framework Laravel. Di kursus pada artikel ini, kita akan melihat contoh nyata untuk mendemonstrasikan tujuan dari artikel ini.

Manajemen paket di Laravel adalah fitur penting yang memungkinkan Anda menggabungkan beberapa fungsionalitas sehingga mudah didistribusikan. Selain itu, Anda selalu dapat mempublikasikan paket Anda sendiri ke repositori seperti Packagist dan GitHub yang memungkinkan pengembang lain mendapatkan keuntungan dari paket Anda.

Untuk mendemonstrasikan konsep tersebut, kita akan membuat sebuah contoh halaman di Laravel yang akan mengupload gambar ke cloud dari Amazon S3. Daripada melakukannya dengan cara biasa, kita akan mengembangkannya sebagai paket yang dibundel yang bisa didistribusikan dan dipelihara dengan mudah.

Sebelum melangkah lebih lanjut, saya berasumsi Anda sudah mengenal framework Laravel karena saya tidak akan memberikan rincian dari konsep dasar Laravel

Selain itu, Anda juga harus memiliki akun AWS yang valid dan kredensial untuk mengakses API Amazon agar sesuai dengan contoh di artikel ini. Jadi, pastikan Anda mengaturnya terlebih dulu.

Dengan semua sudah dipersiapkan, kita siap untuk langsung menyelam ke proses pengembangan.

Menyiapkan File Paket

Mari kita lihat secara singkat daftar file yang akan kita terapkan selama tutorial ini.

  • composer.json: Kita membutuhkan pemetaan kelas dari paket kita di file composer.json yang sudah ada pada akar dari paket kita.
  • config/app.php: File yang sudah tersedia yang akan kita gunakan untuk menambahkan entri untuk penyedia layanan kustom kita sehingga kita bisa memuat views dan routes menggunakan file tersebut.
  • composer.json: Ini adalah file composer.json spesifik untuk paket jika Anda ingin mendistribusikan paketnya dengan yang lain.
  • packages/envato/aws/src/Providers/AwsServiceProvider: File layanan Laravel biasa yang akan digunakan untuk memuat komponen lain dari paket.
  • packages/envato/aws/src/routes/web.php: Ini memuat routes kustom dari paket kita
  • packages/envato/aws/src/Controllers/AwsController.php: Ini adalah file kontroler yang menangani logika aplikasi dari paket kita.
  • packages/envato/aws/src/views/upload.blade.php: File view yang menangani logika untuk rendering.

Jangan khawatir jika belum mengerti saat ini karena kita akan mendiskusikan semua ini secara lebih rinci.

Mengatur Prasyarat Awal

Seperti yang telah kita diskusikan sebelumnya, paket kita mengimplementasikan kasus penggunaan dari upload file ke cloud Amazon S3. Pada bagian ini, kita akan melihat prasyarat yang dibutuhkan agar paket kita bisa dijalankan dengan baik.

Sebagai developer Laravel, Anda harusnya sudah familiar dengan Flysystem, yang menyediakan layer abstraksi yang bagus untuk berinteraksi dengan file system. Ini menyediakan driver yang mudah digunakan sehingga Anda bisa berinteraksi dengan mudah tidak peduli file system apa—baik itu file system lokal atau cloud AWS S3

Untuk mengaktifkan dukungan dari file system cloud Amazon S3 dengan Flysystem, Anda perlu menginstal adapter paket komposer yang sesuai.

Coba dan jalankan perintah composer berikut dari root project Anda untuk menginstall paket flysystem-aws-s3-v3.

Setelah eksekusi perintah tersebut selesai, sekarang Anda bisa menggunakan Laravel Flysystem untuk berinteraksi dengan file system cloud Amazon S3 dengan cara yang sama seperti Anda berinteraksi dengan file system lokal.

Sekarang, mari kita buka file config/filesystems.php untuk melihat pengaturan yang disediakan untuk file system Amazon S3

Seperti yang Anda lihat, konfigurasi telah siap untuk Amazon S3; hanya saja kita perlu mengatur variabel ENV pada file .env

Coba jalankan dan tambahkan variabel berikut ke file .env Anda

Tentu saja, Anda perlu mengganti placeholder diatas dengan nilai yang benar. Sekarang, Anda siap untuk menggunakan adapter Flysystem AWS S3 pada aplikasi Laravel Anda.

Menjelajahi File Paket

Untuk membuat paket Laravel Anda sendiri, hal pertama adalah membuat struktur direktori yang sesuai dan mengikuti konvensi dari sistem Laravel. Saya berasumsi bahwa Anda telah menjalankan aplikasi Laravel basic; bahkan, aplikasi blog bawaan juga bisa digunakan.

Lanjut dan buat direktori packages pada root dari aplikasi Anda. Mengingat Anda akan mendistribusikan paket Anda dengan orang lain, struktur yang disarankan dari paket Anda adalah {nama_vendor}/{nama_paket}

Mengikuti konvensi tersebut, mari lanjut dan buat direktori envato/aws di dalam direktori packages. Seperti yang Anda tebak, envato adalah nama vendor dan aws adalah nama paket itu sendiri. Akhirnya, mari buat direktori packages/envato/aws/src yang akan menampung file source dari paket kita.

Sekarang, kita perlu untuk menginformasikan Laravel tentang paket baru kita. Lanjut dan buka file composer.json pada root dari aplikasi Laravel Anda dan tambahkan entri "Envato\\Aws\\": "packages/envato/aws/src" di bagian autoload seperti yang terlihat dibawah ini.

Seperti yang Anda lihat, namespace Envato\Aws\ telah dipetakan ke direktori packages/envato/aws/src. Sekarang, kita hanya perlu menjalankan perintah dump-autolad untuk mengenerasi ulang pemetaan composer.

Sekarang, Anda bisa menggunakan namespace Envato\Aws\ di aplikasi Anda dan itu akan mengambil file dari lokasi yang benar.

File Composer dari Paket

Sekarang mari lanjut dan tambahkan file composer.json yang spesifik untuk paket kita sehingga Anda bisa mendistribusikannya ke repositori packagist

Pergi ke direktori packages/envato/aws dan jalankan perintah berikut untuk mengenerate file composer.json untuk paket Anda.

Anda akan diminta beberapa pertanyaan biasa, jadi ikuti dan jawab pertanyaan tersebut dan itu akan membuat file composer.json.

Paling tidak, seharusnya terlihat seperti ini.

Route

Dalam paket kita, kita akan membuat halaman sederhana yang menampilkan status file yang diunggah. Jadi kita perlu membuat route yang terkait dengan halaman itu.

Mari membuat file route di packages/envato/aws/src/routes/web.php

Apakah ini memerlukan penjelasan? Langkah selanjutnya yang jelas adalah membuat file kontroler yang terkait.

Kontroler

Mari buat file kontroler di packages/envato/aws/src/Controllers/AwsController.php dengan konten berikut.

Mari kita lihat file tersebut untuk mengerti apa maksud dari tiap baris kode tersebut.

Kita memulainya dengan mengatur namespace dari kontroler kita menjadi Envato\Aws\Controllers. Ingat bahwa kita menambahkan pemetaan Envato\Aws ke packages/envato/aws/src di file composer.json pada root sehingga itu bisa mencari file-file dari paket kita.

Selanjutnya, kita mendefiniskan method upload yang melakukan sinkronisasi file-file lokal ke cloud Amazon S3. Hal penting yang perlu dicatat disini adalah argumen pertama dari method ini yang meminta depedensi \Illuminate\Contracts\Filesystem\Factory. Ketika proses eksekusi, kontrak Laravel yang sesuai akan di injeksi.

Sekarang, kita bisa menggunakan instance factory dari file system untuk membuat instance disk selama yang dibutuhkan. Instance disk di Laravel adalah driver yang mengijinkan Anda untuk mengakses dengan mudah file system tersebut sepert disk lokal, cloud Amazon S3, dan sejenisnya.

Agar sederhana, kita akan mentransfer file gambar statis yang sudah tersedia di dalam penyimpanan lokal Laravel, dan pathnya adalah storage/app/test.jpg.

Sebagai langkah pertama, mari ambil konten dari file source

Dengan semua telah siap seperti yang di sebutkan, Anda seharusnya sudah bisa mensinkronisasikan file ke Amazon S3 menggunakan method put.

Pastikan Anda telah mengatur variabel environtment AWS dengan benar, jaga-jaga jika sesuatu tidak berjalan sesuai yang diharapkan.

Dan hal terakhir adalah memanggil view yang akan menampilkan gambar yang tersinkronisasi dan pesan yang sesuai.

Tentu saja, kita belum membuat file view saat ini, dan itu yang akan kita bahas di bagian selanjutnya.

View.

Mari buat file view di packages/envato/aws/src/views/upload.blade.php dengan konten berikut.

Ini file view yang cukup standar yang akan menampilkan gambar yang telah di unggah setelah proses pengunggahan telah selesai, atau sebaliknya akan menampilkan pesan kesalahan yang sesuai.

Layanan Provider

Kita hampir selesai dengan paket kita karena kita telah membuat file yang diperlukan. Langkah selanjutnya adalah membuat layanan provider sehingga kita bisa mendaftarkan route dan view dari paket kita.

Mari kita buat file layanan provider di packages/envato/aws/src/Providers/AwsServiceProvider.php dengan konten berikut.

Jelas, Anda bisa saja membuat file layanan provider dengan menggunakan perintah artisan juga. Tapi itu akan memerlukan langkah ekstra untuk memindahkan file dari app/Providers ke paket kita.

Namun, ayo kita lihat file layanan provider yang baru saja dibuat.

Pertama-tama, kita muat route dan views yang terkait dengan paket kita.

Selanjutnya, kita sediakan dukungan untuk menerbitkan views dari paket kita sehingga developers yang ingin mengubah views bisa melakukannya. Lain kila saat mereka menjalankan perintah php artisan vendor:publish, Laravel menyalin views dari packages/envato/aws/src/views/ ke resources/views/vendor/aws.

Sekarang, mereka dapat mengubah view di dalam direktori resources/views/vendor/aws, dan akan diambil secara otomatis oleh Laravel, daripada view di dalam packages/envato/aws/src/views/. Bahkan sebenarnya, ini cara yang tepat untuk memodifikasi view paket pihak ketiga, bukan langsung memodifikasi view dari paket secara langsung.

Itu saja yang menyangkut layanan provider. Seperti yang akan Anda harapkan, kita perlu menambahkan entri layanan provider di config/app.php. Tambahkan entri berikut di dalam array providers.

Dan begitulah—semuanya beres sekarang, agar kita bisa lanjut dan menguji paket kita.

Lanjut dan jalankan url http://your-laravel-application/aws/s3/upload pada browser Anda. Jika semua berjalan dengan baik, Anda seharusnya akan melihat gambar pada halaman Anda yang telah di muat dari cloud Amazon S#. Tolong beritahu saya jika Anda mengalami masalah, dan dengan senang hati saya akan menjawabnya.

Jadi kita telah sampai ke catatan penutup dari artikel ini, dan saya harap Anda menyukainya!

Kesimpulan

Hari ini, kita membahas salah satu fitur penting framework Laravel—manajemen paket . Dalam proses menyiapkan paket Laravel kustom kita, kita mencoba melihat contoh dunia nyata yang menunjukkan bagaimana Anda bisa mengunggah gambar ke cloud Amazon S3.

Ini adalah fitur yang sangat bagus jika Anda ingin menggabungkan dan mendistribusikan seperangkat fungsionalitas bersama-sama. Sebenarnya, Anda bisa melihat ini sebagai pilihan pendekatan dalam pengembangan modul kustom Anda di Laravel.

Bagi Anda yang baru saja memulai dengan Laravel atau ingin memperluas pengetahuan, situs, atau aplikasi Anda dengan menggunakan ekstensi, kami memiliki berbagai hal yang dapat Anda pelajari di Pasar Envato.

Seperti biasanya, Anda bisa meninggalkan komentar dan masukan berharga Anda di kolom di bawah ini!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.