Indonesian (Bahasa Indonesia) translation by Dika Budiaji (you can also view the original English article)
Framework kerja Laravel PHP menawarkan sistem bundel untuk memungkinkan pengembang untuk mendistribusikan paket-paket yang berguna kode, atau untuk mengatur aplikasi ke dalam beberapa "bundel" aplikasi yang lebih kecil.
Dalam tutorial ini, kita akan mempelajari seluk-beluk untuk menciptakan dan mendistribusikan bundel dari awal.
Bundel Laravel memiliki akses ke semua fitur yang menawarkan kerangka kerja untuk host aplikasi, termasuk routing, migrasi, tes, views, dan banyak fitur berguna lainnya.
Berikut adalah sedikit rahasia, antara kami: folder
application
Laravel sumber paket juga bundel, yang mengacu pada Laravel sebagaiDEFAULT_BUNDLE
.
Kapan membuat bundel?
Sebelum menulis potongan kode baru, saya ingin bertanya pada diri sendiri beberapa pertanyaan sederhana untuk menentukan apakah tepat untuk bundel. Biarkan saya berbagi teknik ini dengan Anda.
Kode ini bisa bermanfaat untuk orang lain?
Jika jawaban atas pertanyaan ini adalah ya, maka saya akan pertama memastikan bahwa seseorang telah tidak sudah diciptakan sebuah bundel serupa atau paket. Selain untuk keperluan belajar, tak ada gunanya untuk menciptakan kembali. Jika paket lainnya adalah tinggi cukup standar untuk digunakan dalam proyek Anda, kemudian menggunakannya dan menghemat waktu.
Kedua, saya pikir tentang kode dan memutuskan apakah atau tidak mungkin berguna bagi pengguna framework lain, atau orang-orang yang tidak menggunakan framework sama sekali. Jika kode tidak berhubungan dengan framemwork Laravel dan tidak perlu menggunakan Laravel's core kelas, maka saya akan membuat paket composer sebaliknya. Composer paket menjadi standar untuk berbagi kode yang tidak terbatas ke satu framework atau proyek.
Untuk informasi lebih lanjut tentang composer, lihat link berikut:
Jika kode bisa bermanfaat untuk orang lain, dan bergantung pada framework Laravel, maka Anda memiliki alasan yang baik untuk membuat bundle baru.
Apakah saya harus menulis kode ini lagi?
DRY adalah nama permainan.
Jika kode menyediakan fungsionalitas yang Anda menulis sering, maka masuk akal untuk membuat bundel. DRY (Don't repeat yourself!) adalah nama permainan.
Bisa kode ini dianggap sebagai aplikasi yang berdiri sendiri?
Misalnya, Anda dapat membangun sebuah situs sederhana yang, antara fitur-fitur lain, memiliki sebuah blog komponen. Blog ini bisa dianggap sebagai aplikasi terpisah untuk terkandung dalam bundel untuk banyak organisasi yang lebih besar dari proyek Anda.
Contoh lain akan menjadi bagian administrasi, atau 'back-end' untuk website Anda. Bagian ini dapat dengan mudah dianggap komponen terpisah dari aplikasi utama, dan sebaliknya dapat diatur ke dalam satu atau lebih bundel.
Kode ini akan masuk ke dalam kelas tunggal?
Jika hal ini terjadi, Anda mungkin mempertimbangkan menulis sebuah 'Perpustakaan' sebaliknya. Perpustakaan adalah sebuah kelas tunggal yang berisi kode dapat digunakan kembali. Dapat ditambahkan ke proyek Laravel dengan mudah oleh menjatuhkan kelas ke application/libraries/
direktori, yang otomatis dimuat secara default.
Menciptakan Bundle
Mari kita membuat sederhana plug-in yang berinteraksi dengan layanan Gravatar menawarkan sebuah metode sederhana untuk menghasilkan avatar berbagai ukuran dalam aplikasi utama kami. Kita juga akan menambahkan fungsi yang diperlukan untuk memasukkan email alamat dan avatar ukuran, dan preview gravatar terkait pada halaman.
Mari kita mulai dengan menciptakan direktori baru dalam direktori /bundles
proyek kami. Kita akan memanggil direktori dan kami bundel gravvy
. Bukan gravy... gravvy.
Mari kita tambahkan gravvy ke array bundel dalam application/bundles.php
sehingga kita dapat menguji seperti yang kita pergi bersama-sama. Kita akan menambahkan 'auto' => true
pilihan ke array sehingga bundel akan dimulai secara otomatis, dan setiap pemetaan autoloader yang kita buat akan tersedia untuk seluruh Laravel.
1 |
return array( |
2 |
'docs' => array('handles' => 'docs'), |
3 |
'gravvy' => array( |
4 |
'auto' => true |
5 |
)
|
6 |
);
|
Pertama, kita akan perlu untuk membuat sebuah perpustakaan kecil yang akan mengambil pengguna avatar, menggunakan alamat email. Buat sebuah file baru di dalam root bundel, bernama gravvy.php.
Mari kita membuat kelas, yang disebut Gravvy
dengan metode statis, make()
, untuk meniru Skema penamaan yang digunakan oleh Laravel sendiri Perpustakaan.
Metode make()
akan menerima dua parameter: alamat email dan integer untuk mewakili ukuran avatar untuk mengambil.
1 |
<?php
|
2 |
|
3 |
/**
|
4 |
* Class to create Gravatar image elements.
|
5 |
*
|
6 |
* @author You <you@you.com>
|
7 |
*/
|
8 |
class Gravvy |
9 |
{
|
10 |
/**
|
11 |
* Create a new image element from an email address.
|
12 |
* @param string $email The email address.
|
13 |
* @param integer $size The avatar size.
|
14 |
* @return string The source for an image element.
|
15 |
*/
|
16 |
public static function make($email, $size = 32) |
17 |
{
|
18 |
// convert our email into an md5 hash
|
19 |
$email = md5($email); |
20 |
|
21 |
// return the image element
|
22 |
return '<img src="http://www.gravatar.com/avatar/' |
23 |
.$email.'?s='.$size; |
24 |
}
|
25 |
}
|
Bundel akar direktori tidak auto-load, jadi mari kita menulis pemetaan sehingga Laravel tahu di mana untuk menemukan 'Gravvy' kelas ketika dibutuhkan itu.
Ketika memulai bundel, Laravel mencari file, bernama start.php
, dan mengeksekusinya. Jadi mari kita membuat satu dalam direktori kami bundel baru terus kami pemetaan auto-load.
1 |
<?php
|
2 |
|
3 |
// /bundles/gravvy/start.php
|
4 |
|
5 |
Autoload::map(array( |
6 |
'Gravvy' => path('bundles').'/gravvy/gravvy.php' |
7 |
));
|
Sekarang Laravel akan tahu di mana untuk menemukan definisi kelas Gravvy
kami, dan akan memuat sumber ketika pertama dibutuhkan itu. Sangat efisien!
Metode path()
adalah fungsi helper, yang mengembalikan path absolut ke folder berguna yang digunakan oleh Laravel. Dalam kasus ini, kita menggunakannya untuk mengambil path absolut ke direktori bundel.
Sekarang bahwa kita memiliki kerja kami kelas Gravvy, kita bisa berupaya untuk menggunakannya dari dalam controller untuk melihat jika kita mendapatkan hasil yang diharapkan, tapi saya pikir itu akan lebih tepat untuk menulis unit test.
Seperti aplikasi host, unit test tersedia dari dalam bundel. Mari kita membuat folder tests
dalam bundel, dan menambahkan sebuah file baru, yang disebut general.test.php.
1 |
<?php
|
2 |
|
3 |
class TestGeneral extends PHPUnit_Framework_TestCase { |
4 |
|
5 |
/**
|
6 |
* Test that an avatars output appears as expected.
|
7 |
*
|
8 |
* @return void
|
9 |
*/
|
10 |
public function testAvatarImageIsGenerated() |
11 |
{
|
12 |
// start the gravvy bundle
|
13 |
Bundle::start('gravvy'); |
14 |
|
15 |
// check that the output matches the expected
|
16 |
$this->assertEquals(Gravvy::make('thepunkfan@gmail.com'), |
17 |
'<img src="http://www.gravatar.com/avatar/fac3a58aaa455adbcb3f684ccff663b8?s=32" />'); |
18 |
}
|
19 |
|
20 |
/**
|
21 |
* Test that an avatars output appears as expected when
|
22 |
* specifying a custom avatar size.
|
23 |
*
|
24 |
* @return void
|
25 |
*/
|
26 |
public function testAvatarImageIsGeneratedWithSize() |
27 |
{
|
28 |
// start the gravvy bundle
|
29 |
Bundle::start('gravvy'); |
30 |
|
31 |
// check that the output matches the expected
|
32 |
$this->assertEquals(Gravvy::make('thepunkfan@gmail.com', 64), |
33 |
'<img src="http://www.gravatar.com/avatar/fac3a58aaa455adbcb3f684ccff663b8?s=64" />'); |
34 |
}
|
35 |
|
36 |
}
|
Di atas, kami telah menulis dua tes PHPUnit: satu untuk menguji output dari menghasilkan avatar menggunakan email, dan lain yang juga menentukan avatar ukuran dalam pixel. Anda akan melihat bahwa kita sebut Bundle::start('gravvy')
secara manual memulai bundel. Hal ini karena Laravel tidak otomatis beban bundel melalui antarmuka baris perintah saat ini.
Sebagai seorang anggota tim inti, saya ingin menunjukkan bahwa kami berniat untuk menyelesaikan ini dalam versi nanti!
Mari kita gunakan Artisan untuk menjalankan tes PHPUnit kami dengan mengetik perintah test
dan menggunakan nama bundel, gravvy
, sebagai parameter.
1 |
php artisan test gravvy |



Hebat! Pengujian kami telah menjalankan berhasil pada percobaan pertama, dan ego kita telah tumbuh - hanya sedikit!
Sekarang bahwa kelas Gravvy kami telah diuji, orang dapat menggunakannya dalam aplikasi mereka sendiri! Mari kita mengambil bundel langkah lebih lanjut dan membuat beberapa halaman sederhana untuk menghasilkan dan pratinjau gravatars. Kita dapat menggunakan contoh ini untuk belajar bagaimana sistem routing menangani bundel.
Untuk memulai, mari kita membuat controller 'preview' baru untuk bundel kami. Kita perlu membuat direktori controllers
dalam bundel, dan, dalam hal itu, kita akan menambahkan sebuah file baru: preview.php.
1 |
<?php
|
2 |
|
3 |
class Gravvy_Preview_Controller extends Controller |
4 |
{
|
5 |
/**
|
6 |
* Show the preview avatar form.
|
7 |
*/
|
8 |
public function action_form() |
9 |
{
|
10 |
// load the form view
|
11 |
return View::make('gravvy::form'); |
12 |
}
|
13 |
|
14 |
/**
|
15 |
* Show the resulting avatar.
|
16 |
*/
|
17 |
public function action_preview() |
18 |
{
|
19 |
// load the preview view
|
20 |
return View::make('gravvy::preview'); |
21 |
}
|
22 |
}
|
Nama controller harus diawali dengan nama bundel, dan dibukukan dengan _Controller
- seperti halnya dengan controller normal.
Kita dapat menciptakan beberapa route untuk memetakan tindakan controller kita ke URI yang masuk akal, tapi Bukankah lebih baik jika kita bisa membiarkan pengguna kami bundel memutuskan pada basis URI untuk menggunakan? Itu akan? Mari kita lakukan kemudian!
Dengan menambahkan 'handles' => 'gravvy'
pasangan key-value ke array konfigurasi bundel, kita bisa memungkinkan pengguna untuk mengubah tanpa mengubah kode bundel itu sendiri. Berikut ini adalah konfigurasi yang dihasilkan dalam application/bundles.php.
1 |
return array( |
2 |
|
3 |
'docs' => array('handles' => 'docs'), |
4 |
'gravvy' => array( |
5 |
'auto' => true, |
6 |
'handles' => 'gravvy' |
7 |
)
|
8 |
|
9 |
);
|
Sekarang kita dapat menggunakan (:bundel)
placeholder di route kami, yang akan diganti dengan nilai pilihan handles
. Mari kita membuat file routes.ph
p dalam root bundel kami dan menambahkan beberapa route.
1 |
Route::get('(:bundle)/form', 'gravvy::preview@form'); |
2 |
Route::post('(:bundle)/preview', 'gravvy::preview@preview'); |
Kami memiliki rute GET gravvy/form
yang dipetakan ke form
aksi controller Preview
, dan POST gravvy/preview
yang dipetakan ke aksi controller Preview
Preview
.
Mari kita membuat views terkait tindakan controller kita; Anda dapat membuat mereka yang kompleks dan cantik seperti Anda suka, tetapi aku akan membuat mereka tetap sederhana. Pertama, membuat folder views
dalam bundel, sama seperti dengan direktori aplikasi.
1 |
<!-- /bundles/gravvy/views/form.blade.php -->
|
2 |
|
3 |
<form action="{{ URL::to_action('gravvy::preview@preview') }}" method="POST"> |
4 |
<p><label for="name">Email Address:</label></p> |
5 |
<p><input type="text" name="email" /></p> |
6 |
<p><label for="name">Avatar Size:</label></p> |
7 |
<p><input type="text" name="size" /></p> |
8 |
<p><input type="submit" value="Preview!" /></p> |
9 |
</form>
|
Sekarang bahwa kita memiliki form yang akan mengirimkan email dan ukuran field untuk preview@preview
aksi controller/action, mari kita membuat preview page untuk avatar dihasilkan; kita akan menggunakan atribut, bernama $element
, untuk menangani resource.
1 |
<!-- /bundles/gravvy/views/preview.blade.php -->
|
2 |
|
3 |
<p>{{ $element }}</p> |
4 |
<p>{{ HTML::link\_to\_action('gravvy::preview@form', '< Go Back!') }}</p> |
Sekarang kita harus mengubah tindakan preview
untuk membuat penggunaan data yang dikirimkan dari form.
1 |
/**
|
2 |
* Show the resulting avatar.
|
3 |
*/
|
4 |
public function action_preview() |
5 |
{
|
6 |
// get data from our form
|
7 |
$email = Input::get('email'); |
8 |
$size = Input::get('size'); |
9 |
|
10 |
// generate the avatar
|
11 |
$avatar = Gravvy::make($email, $size); |
12 |
|
13 |
// load the preview view
|
14 |
return View::make('gravvy::preview') |
15 |
->with('element', $avatar); |
16 |
}
|
Kami mengambil POST data dan menggunakannya untuk membuat avatar kami. Kita juga harus menambahkan with()
method rantai View:: make()
untuk memungkinkan elemen yang digunakan dalam view.
Kita akhirnya dapat menguji avatar kami melihat pratinjau sistem! Lihatlah /gravvy/form
URI dan mencobanya! Semuanya bekerja seperti yang diharapkan.



Ini tidak mungkin cara terbaik untuk mengatur bundel Anda, tapi itu menyoroti beberapa hal yang berguna yang mungkin. Bersenang-senang menciptakan bundel Anda sendiri, dan pastikan untuk mempertimbangkan mempublikasikan mereka di situs web bundel.
Penerbitan Bundle
Setelah bundel Anda dalam keadaan yang fungsional, Anda mungkin ingin mempertimbangkan daftar dalam direktori kumpulan Laravel. Mari kita jalankan melalui proses mengirimkan bundel baru.
Pertama, Anda akan perlu untuk memiliki akun GitHub, dan memiliki bundel Anda berversi dalam repositori public. GitHub menawarkan gratis account dengan jumlah yang tidak terbatas repositori public; Anda akan menemukan sign up form disini.
Jika Anda baru terhadap kontrol versi dengan Git, saya sarankan membaca seri besar Git artikel di sini di Nettuts +.
Setelah Anda memiliki akun dan kode dalam urutan, pastikan bahwa versi terbaru dari bundel Anda dapat ditemukan dalam branch 'master', dan bahwa akar bundel Anda (dimana start.php
akan menjadi) adalah root repositori, daripada sebuah subdirektori.
Selanjutnya kunjungi website Laravel kumpulan direktori, dan masuk menggunakan kredensial GitHub.



Sekarang klik tombol 'Kirim bundel', pilih repositori bundel dari drop-down menu dan tombol tekan 'Lanjutkan'.
sign up form adalah cukup lurus ke depan, tapi di sini ada beberapa 'gotchas' yang Anda mungkin tidak melihat.
Name
Nama huruf kecil kata kunci yang digunakan untuk menginstal aplikasi Anda. Perlu menjadi kata yang pendek tapi akurat untuk menggambarkan bundel Anda.
Summary / Description
Bidang ini dapat berisi markdown format konten. Jadi merasa bebas untuk menyalin isi dari file GitHub README.md.
Dependencies / Tags
Gunakan tombol koma pada keyboard Anda untuk memisahkan tag dan dependensi. Dependensi bidang harus berisi kunci instalasi pendek untuk bundel yang ada sebagai ketergantungan untuk bundel Anda mengirimkan.
Active
Bidang aktif
hanya menentukan apakah atau tidak bundel akan ditampilkan kepada pengguna lain. Anda dapat tetap untuk menginstal bundel aktif dengan mereka menginstal kata kunci untuk tujuan pengujian. Menetapkan bidang ini untuk 'Ya' hanya bila Anda berada bahagia bagi orang lain untuk menggunakan bundel Anda.
Setelah Anda klik tombol 'Save', bundel Anda telah di submit, dan, jika ditandai sebagai 'Aktif', akan muncul dalam daftar bundel. Anda selalu dapat mengedit bundel Anda daftar di kemudian hari.
Finding bundel
Bundel yang telah berbagi dengan komunitas Laravel tercantum dalam kumpulan direktori di http://bundles.laravel.com.
Anda dapat browse bundel menurut kategori, atau menggunakan fitur pencarian untuk menemukan bundel Anda sedang mencari. Setelah Anda telah menemukan bundel yang memenuhi persyaratan Anda, lihatlah tab 'Instalasi' bundel profil untuk menemukan kata kunci instalasi.
Menginstal Bundle
Setelah Anda memiliki instalasi kata kunci untuk bundel, Anda dapat menginstalnya dari dasar proyek Anda menggunakan antarmuka baris perintah 'Artisan', dan ini adalah perintah bundle: Install
. Sebagai contoh...
1 |
php artisan bundle:install bob |
Artisan akan berkonsultasi bundle API untuk mengambil jalan menuju bundel GitHub repositori, dan repositori dari semua dependensi. Akan kemudian download paket sumber langsung dari GitHub, dan ekstrak mereka ke direktori /bundles
untuk Anda.
Anda akan perlu untuk secara manual menambahkan nama bundel ke array dalam application/bundles.php
untuk bundel yang menjadi diaktifkan.
1 |
return array( |
2 |
'docs' => array('handles' => 'docs'), |
3 |
'bob'
|
4 |
);
|
Dalam beberapa situasi, Anda mungkin perlu untuk menambahkan informasi tambahan untuk array
Catatan ini untuk memfasilitasi auto starting, atau mengarahkan rute ke bundel. Penulis akan diberikan informasi tambahan ini dalam deskripsi bundel, jika itu adalah kasus.
Terima kasih untuk membaca dan menikmati membuat bundel Anda sendiri dengan Laravel! Jika Anda ingin mempelajari lebih lanjut tentang Laravel, pastikan untuk mengambil buku saya!