Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. PHP
Code

Esensi dari Mencipta Bundel Laravel

by
Difficulty:IntermediateLength:LongLanguages:

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

Rangka kerja PHP Laravel menawarkan sistem berkasnya untuk membolehkan pemaju untuk mengagihkan semula paket bungkusan yang berguna, atau untuk mengatur aplikasi ke dalam beberapa 'berkas' aplikasi yang lebih kecil.

Dalam tutorial ini, kami akan mempelajari selok-belok membuat dan mengedarkan berkas dari awal.

Bungkusan Laravel mempunyai akses kepada semua ciri yang menawarkan rangka kerja kepada aplikasi tuan rumah, termasuk penghalaan, migrasi, ujian, pandangan dan banyak ciri berguna yang lain.

Berikut adalah rahsia kecil, antara kami: folder aplikasi dari sumber sumber Laravel juga merupakan satu bundle, yang Laravel merujuk sebagai DEFAULT_BUNDLE.


Kapan Membuat Bundle?

Sebelum menulis sekeping kod baru, saya ingin bertanya kepada diri sendiri beberapa soalan mudah untuk menentukan sama ada sesuai untuk satu kumpulan. Biarkan saya berkongsi teknik ini dengan anda.

Bolehkah kod ini berguna kepada orang lain?

Sekiranya jawapan kepada soalan ini adalah ya, maka saya akan memastikan bahawa seseorang belum lagi membuat pakej atau pakej yang sama. Selain untuk tujuan pembelajaran, tidak berguna untuk mencipta roda. Jika pakej lain adalah standard yang cukup tinggi untuk digunakan dalam projek anda, kemudian gunakannya dan simpan sendiri masa.

Kedua, saya berfikir tentang kod dan memutuskan sama ada atau tidak ia mungkin berguna kepada pengguna rangka kerja lain, atau orang tidak menggunakan rangka kerja sama sekali. Jika kod itu tidak berkaitan dengan rangka kerja Laravel dan tidak perlu menggunakan kelas teras Laravel, maka saya akan membuat pakej Komposer. Pakej komposer secara meluas menjadi standard bagi kod perkongsian yang tidak terhad kepada kerangka atau projek tunggal.

Untuk maklumat lanjut tentang Komposer, rujuk pautan berikut:

Jika kod itu berguna kepada orang lain, dan bergantung kepada kerangka Laravel, maka anda mempunyai alasan yang baik untuk membuat bundel baru.

Adakah saya perlu menulis semula kod ini?

KERING adalah nama permainan.

Jika kod itu menyediakan fungsi yang sering anda tulis, maka masuk akal untuk membuat berkas. KERING (Jangan ulangi diri sendiri!) Adalah nama permainan.

Bolehkah kod ini dianggap sebagai aplikasi yang berdiri sendiri?

Sebagai contoh, anda mungkin membina laman web yang mudah, di antara ciri-ciri lain, mempunyai komponen blog. Blog ini boleh dianggap sebagai aplikasi yang berasingan untuk dimasukkan ke dalam kumpulan untuk organisasi yang lebih besar dalam projek anda.

Satu lagi contoh akan menjadi seksyen pentadbiran, atau 'back-end' untuk laman web anda. Bahagian ini dengan mudah boleh dianggap sebagai komponen yang berasingan dari aplikasi utama, dan sebaliknya boleh diaturkan dalam satu atau lebih berkas.

Adakah kod ini akan masuk dalam satu kelas?

Sekiranya ini berlaku, anda mungkin mempertimbangkan menulis '"erpustakaan". Perpustakaan adalah kelas tunggal yang mengandungi kod boleh digunakan semula. Ia boleh ditambah kepada projek Laravel dengan mudah dengan menjatuhkan kelas ke dalam aplikasi/pustaka/ direktori, yang dimuat secara automatik secara lalai.


Mecipta Bundle

Mari buat pemalam yang mudah yang berinteraksi dengan layanan Gravatar untuk menawarkan kaedah mudah untuk menghasilkan avatar pelbagai saiz dalam aplikasi utama kami. Kami juga akan menambah fungsi yang diperlukan untuk memasukkan alamat e-mel dan saiz avatar, dan pratonton gravatar yang berkaitan pada halaman.

Mari kita mulakan dengan membuat direktori baru dalam direktori /bundle projek kami. Kami akan memanggil direktori dan gravvy bundle kami. Bukan kuah ... gravvy.

Mari tambahkan gravvy ke array bundle dalam aplikasi/bundles.php supaya kita dapat mengujinya ketika kita pergi. Kami akan menambah pilihan 'auto' => benar pada array supaya bundel akan dimulakan secara automatik, dan mana-mana pemetaan autoloader yang kami buat akan tersedia untuk keseluruhan Laravel.

Pertama, kita perlu membuat perpustakaan kecil yang akan mengambil avatar pengguna, menggunakan alamat e-mel. Buat fail baru di dalam akar bundle, bernama gravvy.php. Mari buat kelas, dipanggil Gravvy dengan kaedah statik, make(), untuk meniru skema penamaan yang digunakan oleh perpustakaan Laravel sendiri.

Kaedah make() akan menerima dua parameter: alamat e-mel dan integer untuk mewakili saiz avatar untuk mendapatkan semula.

Direktori root bundle tidak dimuatkan secara automatik, jadi mari kita tulis pemetaan supaya Laravel tahu di mana mencari kelas 'Gravvy' apabila ia memerlukannya.

Apabila memulakan bungkusan, Laravel mencari fail, bernama start.php, dan melaksanakannya. Oleh itu mari kita buat satu dalam direktori kumpulan baru kami untuk memetakan pemetaan auto-beban kami.

Sekarang Laravel akan tahu di mana untuk mencari definisi untuk kelas Gravvy kami, dan akan memuat sumber apabila ia memerlukannya terlebih dahulu. Sangat cekap!

Kaedah path() adalah fungsi penolong, yang mengembalikan laluan mutlak kepada folder berguna yang digunakan oleh Laravel. Dalam kes ini, kami menggunakannya untuk mendapatkan laluan mutlak ke direktori kumpulan.

Sekarang bahawa kami mempunyai kelas Gravvy kami, kami boleh cuba menggunakannya dari dalam pengawal untuk melihat apakah kami mendapat output yang diharapkan, tetapi saya fikir ia lebih sesuai untuk menulis satu ujian unit.

Sama seperti aplikasi tuan rumah, ujian unit boleh didapati dari dalam bungkusan. Mari buat folder tests dalam bundle, dan tambahkan fail baru, yang dipanggil general.test.php.

Di atas, kami telah menulis dua ujian PHPUnit: satu untuk menguji output menjana avatar menggunakan e-mel, dan yang lain juga menentukan saiz avatar dalam piksel. Anda akan melihat bahawa kami memanggil Bundle::start ('gravvy') untuk memulakan secara manual bundle. Ini adalah kerana Laravel tidak bundel beban auto melalui antara muka baris arahan pada masa ini.

Sebagai ahli pasukan utama, saya ingin menunjukkan bahawa kami berhasrat untuk menyelesaikannya dalam versi masa depan!

Mari kita gunakan Artisan untuk menjalankan ujian PHPUnit kami dengan menaip arahan test dan menggunakan nama paket, gravvy, sebagai parameter.

PHPUnit Result

Hebat! Ujian kami telah berjaya dijalankan pada percubaan pertama, dan ego kami berkembang - hanya sedikit!

Sekarang kelas Gravvy kami telah diuji, orang boleh menggunakannya dalam aplikasi mereka sendiri! Mari ambil bungkusan lebih jauh dan buat beberapa halaman mudah untuk menghasilkan dan melihat gravatar. Kita boleh menggunakan contoh ini untuk mengetahui bagaimana sistem routing mengendalikan berkas.

Untuk memulakan, mari buat pengawal 'pratonton' baru untuk bundle kami. Kita perlu membuat direktori controller dalam bungkusan, dan, di dalamnya, kita akan menambah fail baru: preview.php.

Nama pengawal mesti diberi nama dengan nama bundel, dan dilampirkan dengan _Controller - seperti pengawal biasa.

Kami boleh membuat beberapa laluan untuk memetakan tindakan pengawal kami kepada URI yang masuk akal, tetapi tidakkah lebih baik jika kami dapat membiarkan pengguna membuat keputusan kami menggunakan URI asas untuk digunakan? Ia akan? Mari buat begitu!

Dengan menambah pasangan nilai 'genggam' =>'gravvy' kepada array konfigurasi bundle, kami boleh membenarkan pengguna mengubahnya tanpa mengubah kod bundle itu sendiri. Inilah konfigurasi yang dihasilkan dalam aplikasi/bundles.php.

Sekarang kita boleh menggunakan pemegang tempat (:bundle) dalam laluan kami, yang akan digantikan dengan nilai pilihan pemegangnya. Mari buat fail routes.php di dalam akar berkas kami dan tambahkan beberapa laluan.

Kami mempunyai laluan GET gravvy/borang yang dipetakan kepada tindakan bentuk pengawal Pratonton, dan POST gravvy/preview yang dipetakan kepada tindakan pratonton pengawal Pratonton.

Mari buat pandangan yang berkaitan untuk tindakan pengawal kami; anda boleh menjadikannya sebagai kompleks dan cantik seperti yang anda suka, tetapi saya akan memastikan mereka mudah. Pertama, buat folder paparan dalam bungkusan, seperti dengan direktori aplikasi.

Sekarang kita mempunyai borang yang akan menghantar medan e-mel dan saiz ke preview@preview pengawal/tindakan pasangan, mari kita buat halaman pratonton untuk avatar yang dihasilkan; kami akan menggunakan atribut, bernama $elemen, untuk memegang sumbernya.

Sekarang kita mesti mengubah tindakan pratonton untuk menggunakan data yang dihantar dari borang.

Kami mengambil data POST dan menggunakannya untuk mencipta avatar kami. Kita juga mesti menambah kaedah with() ke rajah Lihat::make() untuk membolehkan unsur tersebut digunakan dalam paparan.

Kami akhirnya boleh menguji sistem pratonton avatar kami! Lihatlah URI/gravvy/form dan berikannya! Semuanya berfungsi seperti yang diharapkan.

Gravvy Views

Ini mungkin bukan cara terbaik untuk mengaturkan berkas anda, tetapi ia menyerlahkan beberapa perkara yang berguna yang mungkin. Bersenang-senang membuat berkas anda sendiri, dan pastikan anda menerbitkannya di laman web bundle.


Menerbitkan Bundel

Sebaik sahaja bundel anda berada dalam keadaan berfungsi, anda mungkin ingin mempertimbangkan menyenaraikannya dalam Direktori Laravel Bundles. Mari kita jalankan proses penyerahan berkas baru.

Pertama, anda perlu mempunyai akaun GitHub, dan memuat versi anda dalam repositori awam. GitHub menawarkan akaun percuma dengan bilangan repositori awam yang tidak terhad; anda akan menemui borang pendaftaran mereka di sini.

Jika anda baru untuk mengawal versi dengan Git, saya cadangkan membaca artikel siri Git yang hebat di sini di Nettuts+.

Sebaik sahaja anda mempunyai akaun dan kod anda dengan teratur, pastikan versi terbaharu bundle anda boleh didapati di dalam cawangan 'master', dan bahawa root bundle anda (di mana start.php akan menjadi) adalah akar dari repositori, bukan subdirektori.

Lawatan seterusnya ke laman web Direktori Laravel Bundles, dan log masuk menggunakan kelayakan GitHub anda.

github login

Sekarang klik butang 'Hantar satu Bundle', pilih repositori kumpulan anda dari menu drop down dan tekan butang 'Continue'.

Borang pendaftaran adalah agak lurus ke hadapan, tetapi di sini terdapat beberapa 'gotchas' yang anda mungkin tidak dapat.

Nama

Nama ialah kata kunci huruf kecil yang digunakan untuk memasang aplikasi anda. Ia perlu menjadi perkataan yang pendek tetapi tepat untuk menggambarkan berkas anda.

Ringkasan / Penerangan

Bidang ini boleh mengandungi kandungan format markdown. Oleh itu, jangan ragu untuk menyalin kandungan dari fail GitHub README.md anda.

Ketergantungan / Tag

Gunakan butang koma pada papan kekunci anda untuk memisahkan tag dan dependensi. Bidang ketergantungan harus mengandungi kata kunci pemasangan pendek untuk berkas yang ada sebagai ketergantungan untuk berkas yang Anda kirimkan.

Aktif

Medan Aktif hanya menentukan sama ada atau tidak bundel itu akan dipaparkan kepada pengguna lain. Anda masih boleh memasang bungkusan aktif oleh kata kunci pemasangan mereka untuk tujuan ujian. Tetapkan medan ini kepada 'Ya' hanya apabila anda gembira untuk orang lain menggunakan pakej anda.

Sebaik sahaja anda mengklik butang 'Simpan', berkas anda telah dihantar, dan, jika ditandakan sebagai 'Aktif', akan muncul dalam senarai penyenaraian. Anda sentiasa boleh mengedit penyenaraian berkas anda di kemudian hari.


Mencari Bundle

Bundel yang telah dikongsi bersama dengan masyarakat Laravel disenaraikan dalam direktori Bundel di http://bundles.laravel.com.

Anda boleh menyemak imbas kumpulan mengikut kategori, atau gunakan ciri carian untuk mencari bungkusan yang anda cari. Sebaik sahaja anda telah menemui satu ikatan yang memenuhi keperluan anda, lihat pada tab 'Pemasangan' profil bundle untuk mencari kata kunci memasang.


Memasang Bundle

Sebaik sahaja anda memasang kata kunci untuk satu bundle, anda boleh memasangnya dari pangkalan projek anda menggunakan antara muka baris 'Artisan' dan ia perintah bundle:instasll. Sebagai contoh..

Artisan akan merujuk API bundle untuk mengambil laluan ke gudang GitHub, dan repositori semua dependensinya. Ia kemudian akan memuat turun pakej sumber terus dari GitHub, dan mengekstraknya ke /bundle directori untuk anda.

Anda perlu menambahkan nama bundel secara manual ke dalam array dalam aplikasi/bundles.php untuk bundle untuk menjadi aktif.

Dalam sesetengah keadaan, anda mungkin perlu menambah maklumat tambahan untuk entri array ini untuk memudahcarakan permulaan automatik, atau mengarahkan laluan tertentu ke bundle. Penulis akan menyediakan maklumat tambahan ini dalam huraian berkas, jika itu berlaku.


Terima kasih kerana membaca dan menikmati membuat berkas anda sendiri dengan Laravel! Jika anda ingin mengetahui lebih lanjut tentang Laravel, pastikan anda mengambil buku saya!

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.