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

Pengurusan Pakej di Laravel

by
Difficulty:IntermediateLength:LongLanguages:

Malay (Melayu) translation by Aisyah Arrafah (you can also view the original English article)

Dalam artikel ini, kami akan meneruskan dan meneroka ciri pengurusan pakej dalam rangka Laravel. Dalam perjalanan artikel ini, kita akan melalui contoh dunia nyata untuk menunjukkan tujuan artikel tersebut.

Pengurusan pakej di Laravel adalah ciri penting yang membolehkan anda membungkus sekeping fungsi supaya ia dapat diedarkan dengan mudah. Selain itu, anda sentiasa dapat menerbitkan pakej anda ke repositori seperti Packagist dan GitHub yang membolehkan pemaju lain mendapat manfaat daripada pakej anda.

Untuk menunjukkan konsep ini, kami akan membina laman contoh di Laravel yang memuat naik imej ke awan Amazon S3. Daripada pergi dengan aliran biasa, kami akan mengembangkannya sebagai pakej yang dibundel yang boleh diedarkan dan dikendalikan dengan mudah.

Sebelum bergerak ke hadapan, saya menganggap bahawa anda sudah biasa dengan kerangka Laravel sudah kerana saya tidak akan memasuki butiran konsep asas Laravel.

Juga, anda perlu mempunyai akaun AWS yang sah dan kelayakan untuk mengakses Amazon API untuk mengikuti bersama dengan contoh dalam artikel ini. Jadi, pastikan anda menetapkannya terlebih dahulu.

Dengan segala-galanya, kami bersedia untuk menyelami perkembangan sebenar.

Menyediakan Fail Pakej

Mari kita lihat senarai fail yang akan kami laksanakan sepanjang tutorial ini.

  • composer.json: Kita perlu menambah pemetaan kelas pakej kami dalam fail komposer.json yang ada di akar pakej.
  • config/app.php: Ini adalah fail yang sedia ada yang akan kami gunakan untuk menambah kemasukan pembekal khidmat kami supaya kami dapat memuatkan pandangan dan laluan menggunakan fail itu.
  • composer.json: Ini adalah fail komposer.json khusus pakej sekiranya anda ingin mengedarkan pakej dengan orang lain.
  • pakej / envato / aws / src / Penyedia / AwsServiceProvider.php: Pembekal perkhidmatan Laravel biasa yang akan digunakan untuk memuatkan komponen lain dari pakej tersebut.
  • pakej/envato/aws/src/routes/web.php: Ia memuat laluan khas pakej kami.
  • pakej/envato/aws/src/Controllers/AwsController.php: Ini adalah fail pengawal yang mengendalikan logik aplikasi pakej kami.
  • pakej / envato / aws / src / views / upload.blade.php: Fail paparan yang mengendalikan logik rendering.

Jangan bimbang jika ia tidak masuk akal lagi kerana kita akan membincangkan segala-galanya secara terperinci apabila kita meneruskannya.

Menyediakan Prasyarat

Seperti yang telah kita bincangkan sebelumnya, pakej kami melaksanakan penggunaan fail upload ke awan Amazon S3. Dalam bahagian ini, kami akan meneruskan prasyarat yang perlu ditubuhkan untuk menjalankan pakej kami dengan jayanya.

Sebagai pemaju Laravel, anda mesti kenal dengan Flysystem, yang menyediakan lapisan abstraksi yang baik untuk berinteraksi dengan sistem fail. Ia menyediakan pemandu yang mudah digunakan supaya anda boleh berinteraksi dengannya tidak kira jenis sistem fail yang anda hadapi-sama ada sistem fail tempatan atau sistem awan AWS S3.

Untuk membolehkan sokongan sistem fail awan Amazon S3 dengan Flysystem, anda perlu memasang pakej komposer penyesuai yang sepadan.

Teruskan dan jalankan arahan komposer berikut dari akar projek anda untuk memasang paket flysystem-aws-s3-v3.

Apabila berjaya melaksanakan perintah itu, kini anda dapat menggunakan Laravel Flysystem untuk berinteraksi dengan sistem fail awan Amazon S3 dengan cara yang sama anda akan menggunakannya untuk sistem fail setempat.

Kini, mari kita tarik fail konfigurasi/filesystems.php dengan cepat untuk melihat tetapan yang disediakan untuk sistem fail Amazon S3.

Seperti yang anda lihat, konfigurasi sudah sedia untuk Amazon S3; ia hanya perlu kita tetapkan pembolehubah ENV yang sesuai dalam .env file.

Teruskan dan tambah pembolehubah berikut dalam .env file anda.

Sudah tentu, anda perlu menggantikan ruang letak dengan nilai sebenar mereka. Sekarang, anda sudah bersedia untuk menggunakan adaptor Flysystem AWS S3 dalam aplikasi Laravel anda.

Melalui Fail Pakej

Untuk membuat pakej Laravel anda sendiri, perkara pertama adalah membuat struktur direktori yang sesuai yang mencerminkan konvensyen sistem Laravel. Saya mengandaikan bahawa anda sudah menjalankan aplikasi Laravel asas; sebenarnya, aplikasi blog lalai akan dilakukan juga.

Teruskan dan buat direktori pakej di akar aplikasi anda. Memandangkan anda akan mengedarkan pakej anda dengan orang lain, struktur pilihan pakej anda harus {vendor_name} / {package_name}.

Berikutan konvensyen itu, mari kita teruskan dan buat direktori envato/aws di bawah direktori pakej. Seperti yang anda mungkin telah meneka, envato adalah nama vendor, dan aws bermaksud nama paket itu sendiri. Akhir sekali, mari buat pakej/envato/aws/src yang memegang fail sumber pakej kami.

Sekarang, kita perlu memaklumkan Laravel mengenai pakej baru kami. Teruskan dan buka fail komposer.json di dalam akar aplikasi Laravel anda dan tambah "Envato \\\\ Aws \\\\": "kemasukan / envato / aws / src" dalam bahagian autoload seperti yang ditunjukkan di bawah.

Seperti yang anda lihat, nama ruang nama Envato \\ Aws dipetakan ke direktori pakej / envato / aws / src. Sekarang, kita hanya perlu menjalankan arahan dump-autoload untuk menghasilkan semula pemetaan komposer.

Kini, anda boleh menggunakan Envato\Aws\  namespace dalam aplikasi anda dan ia akan mengambil fail dari lokasi yang betul!

Fail Komposer Pakej tersebut

Sekarang, mari maju dan tambahkan fail composer.json khusus pakej supaya anda boleh mengedarkan pakej anda ke repositori packagist.

Pergi ke direktori pakej/envato/aws dan jalankan arahan berikut untuk menjana fail komposer.json untuk pakej anda.

Anda akan diminta dengan soalan-soalan biasa, jadi hanya melalui dan ia akan membuat fail composer.json.

Sekurang-kurangnya, ia sepatutnya kelihatan seperti ini.

 Route

Di dalam pakej kami, kami akan membuat halaman mudah yang memaparkan status fail yang dimuat naik. Oleh itu, kita perlu membuat laluan yang berkaitan dengan halaman tersebut.

Mari buat fail laluan pada pakej / envato / aws / src / routes / web.php.

Adakah ia memerlukan sebarang penjelasan sama sekali? Langkah seterusnya yang jelas adalah untuk mencipta fail pengawal yang berkaitan.

Pengawal

Mari buat fail pengawal pada pakej / envato / aws / src / Controllers / AwsController.php dengan kandungan berikut.

Mari kita lalui fail untuk memahami apa setiap sekeping kod yang dimaksudkan untuk.

Kami memulakan perkara dengan menetapkan ruang nama pengawal kami kepada ruang nama Envato \\ Aws \\ Controllers. Ingat bahawa kami menambah pemetaan Envato \\ Aws ke pakej / envato / aws / src dalam fail komposer root.json supaya ia dapat mencari fail pakej kami.

Seterusnya, kami telah menentukan kaedah muat naik yang diperlukan untuk menyegerakkan fail tempatan ke awan Amazon S3. Perkara penting yang perlu diperhatikan di sini ialah hujah pertama kaedah muat naik yang meminta \\ Illuminate \\ Contracts \\ Filesystem \\ kilang Ketergantungan . Semasa pelaksanaan, kontrak Laravel yang sesuai akan disuntik.

Kini, kita boleh menggunakan contoh kilang fail sistem untuk membuat contoh cakera seperti yang diperlukan. Contoh cakera di Laravel adalah pemandu yang membolehkan anda akses mudah ke sistem fail asas seperti cakera setempat, awan Amazon S3, dan sejenisnya.

Untuk kesederhanaan, kami akan memindahkan fail imej statik yang sudah sedia ada di bawah storan tempatan default Laravel, dan jalan adalah penyimpanan/app/test.jpg.

Sebagai langkah pertama, mari ambil kandungan fail sumber.

Dengan semua yang ditetapkan seperti yang dinyatakan, anda sepatutnya dapat menyegerakkan fail ke Amazon S3 menggunakan kaedah yang diletakkan.

Pastikan anda telah menetapkan pembolehubah persekitaran AWS dengan betul, sekiranya sesuatu tidak berfungsi seperti yang diharapkan.

Dan perkara terakhir ialah memanggil fail paparan yang memaparkan imej yang disegerakkan dan mesej yang sesuai.

Sudah tentu, kami belum membuat fail paparan, dan itu betul-betul apa seksyen seterusnya.

Lihat

Mari buat fail paparan pada pakej / envato / aws / src / views / upload.blade.php dengan kandungan berikut.

Ia adalah fail pandangan yang agak standard yang memaparkan imej yang dimuat naik apabila memuat naik yang berjaya, atau jika tidak terdapat mesej ralat yang sesuai.

Pembekal perkhidmatan

Kami hampir selesai dengan pakej kami kerana kami telah mencipta fail yang diperlukan. Langkah seterusnya adalah untuk mencipta pembekal perkhidmatan supaya kami dapat mendaftarkan laluan dan pandangan pakej kami.

Mari buat fail penyedia perkhidmatan pada pakej / envato / aws / src / Penyedia / AwsServiceProvider.php dengan kandungan berikut.

Jelas sekali, anda boleh mencipta fail penyedia perkhidmatan dengan menggunakan arahan artis juga. Tetapi ia memerlukan langkah tambahan untuk memindahkan fail dari aplikasi/Penyedia ke pakej kami.

Bagaimanapun, mari meneruskan fail penyedia perkhidmatan yang baru saja dibuat.

Pertama, kita memuatkan laluan dan pandangan yang berkaitan dengan pakej kami.

Seterusnya, kami menyediakan sokongan untuk menyiarkan pandangan pakej kami supaya pemaju yang ingin menimpa pandangan dapat melakukannya. Seterusnya mereka menjalankan vendor tukang php: menerbitkan arahan, Laravel menyalin pandangan dari pakej / envato / aws / src / views / kepada sumber / pandangan / vendor / aws.

Sekarang, mereka boleh mengubah pandangan di bawah direktori sumber/pandangan/vendor/aws, dan ia akan diambil secara automatik oleh Laravel dan bukan pandangan di bawah pakej/envato/aws/src/views/. Sebenarnya, ia adalah cara yang betul untuk mengubah suai pandangan pakej pihak ketiga, bukannya mengubah suai pakej secara langsung.

Itulah sejauh penyedia perkhidmatan berkenaan. Seperti yang anda jangkakan, kami perlu menambah penyedia perkhidmatan dalam config/app.php. Tambah entri berikut dalam pelbagai pembekal.

Dan di sana anda-segala-galanya teratur sekarang, supaya kita boleh teruskan dan menguji pakej kami.

Teruskan dan jalankan http://your-laravel-aplikasi/aws/s3/URL muat naik dalam penyemak imbas anda. Sekiranya semuanya berjalan lancar, anda akan melihat imej di halaman anda yang dimuatkan dari awan Amazon S3. Tolong beritahu saya jika anda menghadapi sebarang masalah, dan saya lebih senang menjawabnya.

Oleh itu kita berada di nota penutup artikel ini, dan saya harap anda telah menikmati!

Kesimpulan

Hari ini, kami membincangkan salah satu ciri penting dalam pengurusan pakej rangka kerja Laravel. Dalam proses menubuhkan pakej Laravel tersuai kami, kami menerangkan contoh dunia sebenar yang menunjukkan bagaimana anda boleh memuat naik imej ke awan Amazon S3.

Ia adalah satu ciri yang sangat bagus sekiranya anda ingin mengikat dan mengedarkan satu set fungsi bersama-sama. Malah, anda boleh melihat ini sebagai pilihan untuk mendekati pembangunan modul peribadi anda di Laravel.

Bagi anda yang baru sahaja bermula dengan Laravel atau ingin memperluas pengetahuan, laman web, atau aplikasi dengan sambungan, kami mempunyai pelbagai perkara yang anda boleh belajar di Pasar Envato.

Seperti biasa, anda boleh meninggalkan komen dan maklum balas berharga anda di dalam suapan di bawah!

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.