Laravel

**Laravel** merupakan sejenis rangka kerja web PHP yang percuma dan berjenis sumber terbuka  PHP. Dicipta oleh Taylor Otwell dan bertujuan untuk pembangunan aplikasi web berkonsepkan model-view-controller (MVC) dan corak seni bina berdasarkan Symfony . Antara ciri Laravel adalah sistem pembungkusan modular dengan pengurus pergantungan khusus, cara yang berbeza untuk mengakses pangkalan data hubungan, utiliti yang membantu dalam penyebaran dan penyelenggaraan aplikasi, dan orientasinya terhadap gula sintaksis .     

Kod sumber Laravel dihoskan di GitHub dan dilesenkan mengikut syarat Lesen MIT . 

## Sejarah
Taylor Otwell mencipta Laravel sebagai usaha untuk memberikan alternatif yang lebih maju untuk kerangka CodeIgniter, yang tidak memberikan ciri-ciri tertentu seperti sokongan terbina dalam untuk pengesahan dan kebenaran pengguna . Pelancaran Laravel versi beta pertama kali tersedia pada 9 Jun 2011, diikuti oleh Laravel&nbsp;1 keluaran lewat bulan yang sama. Laravel&nbsp;1 termasuk sokongan bawaan untuk pengesahan, penyetempatan, model, pandangan, sesi, penghalaan dan mekanisme lain, tetapi kekurangan sokongan untuk pengawal yang menghalangnya daripada menjadi kerangka MVC yang sebenarnya. 

Laravel&nbsp;2 dikeluarkan pada bulan September 2011, membawa pelbagai penambahbaikan dari pengarang dan komuniti. Ciri baru utama termasuk sokongan untuk pengawal, yang menjadikan Laravel&nbsp;2 kerangka kerja yang sepenuhnya sesuai dengan MVC, dukungan terpadu untuk prinsip inversi kawalan (IoC), dan sistem templat yang disebut *Blade* . Sebagai kelemahan, sokongan untuk pakej pihak ketiga dikeluarkan di Laravel&nbsp;2. 

Laravel&nbsp;3 dilancarkan pada bulan Februari 2012 dengan ciri baru termasuk antaramuka baris perintah cmd (CLI) bernama *Artisan*, sokongan bawaan untuk lebih banyak sistem pengurusan pangkalan data, migrasi pangkalan data sebagai bentuk kontrol versi untuk susun atur pangkalan data, dukungan untuk menangani acara, dan sistem pembungkusan yang dipanggil *Bundles* . Peningkatan basis pengguna dan populariti Laravel diselaraskan dengan pembebasan Laravel&nbsp;3. 

Laravel&nbsp;4, dengan nama kod *Illuminate*, dikeluarkan pada bulan Mei 2013. Itu dibuat sebagai penulisan semula lengkap kerangka Laravel, memindahkan susun aturnya ke dalam satu set paket terpisah yang diedarkan melalui Composer, yang berfungsi sebagai pengurus pakej peringkat aplikasi . Susun atur seperti itu meningkatkan kepanjangan Laravel&nbsp;4, yang dipasangkan dengan jadual pelepasan tetap rasmi yang merangkumi enam bulan antara pelepasan titik kecil. Ciri baru lain di Laravel&nbsp;4 pelepasan merangkumi penyemaian pangkalan data untuk populasi awal pangkalan data, sokongan untuk antrian mesej, sokongan terpasang untuk menghantar pelbagai jenis e-mel, dan sokongan untuk penghapusan data pangkalan data yang tertunda yang disebut *penghapusan lembut* .   

Laravel&nbsp;5 dilancarkan pada Februari 2015 sebagai hasil daripada perubahan dalaman yang akhirnya menamakan semula Laravel yang akan datang&nbsp;4.3 pelepasan. Ciri baru di Laravel&nbsp;5 pelepasan merangkumi sokongan untuk menjadualkan tugas yang dilaksanakan secara berkala melalui paket yang disebut *Scheduler*, lapisan abstraksi yang disebut *Flysystem* yang membolehkan penyimpanan jarak jauh digunakan dengan cara yang sama seperti sistem fail tempatan, pengendalian aset pakej yang lebih baik melalui *Elixir*, dan pengesahan yang disederhanakan secara luaran yang disederhanakan melalui pakej *Socialite* pilihan. Laravel&nbsp;5 juga memperkenalkan struktur pohon direktori dalaman baru untuk aplikasi yang dikembangkan.   

Laravel&nbsp;5.1, dilancarkan pada bulan Jun 2015, merupakan pelepasan pertama Laravel yang mendapat sokongan jangka panjang (LTS). Versi LTS baru dirancang untuk satu setiap dua tahun. 

Laravel&nbsp;5.3 dikeluarkan pada 23 Ogos 2016. Ciri-ciri baru di 5.3 difokuskan pada peningkatan kelajuan pengembang dengan menambahkan peningkatan tambahan di luar kotak untuk tugas biasa. 

Laravel 5.4 dikeluarkan pada 24 Januari 2017, dengan banyak ciri baru seperti Laravel Dusk, Laravel Mix, Blade Components and Slots, Markdown Emails, Automatic Facades, Route Improvements, Higher Order Messaging for Collections, dan banyak lagi. 

Laravel 6 dilancarkan pada 3 September 2019, peralihan penghasilan kod cetak biru, memperkenalkan semantik versi, keserasian dengan Laravel Vapor, peningkatan respons kebenaran, peningkatan kerja tengah, koleksi malas, dan peningkatan sub-pertanyaan. Perancah frontend dikeluarkan dari paket utama dan dipindahkan ke dalam paket laravel / ui. 

Laravel 7 dilancarkan pada 3 Mac 2020, dengan ciri baru seperti Laravel Sanctum, Custom Eloquent Cast, Blade Component Tags, Fluent String Operations dan Route Model Binding Improvements. 

Versi Laravel terbaru adalah versi 8, yang dirilis pada 8 September 2020, dengan ciri baru seperti Laravel Jetstream, model kilang model, penghijrahan migrasi, Tailwind CSS untuk paparan penomboran dan peningkatan kegunaan lain. 

### Sejarah keluaran
Versi yang ditetapkan LTS disokong dengan perbaikan bug selama 2 tahun dan pembaikan keselamatan selama 3 tahun. Keluaran lain disokong dengan perbaikan bug selama 6 bulan dan pembaikan keselamatan selama 1 tahun. 

## Ciri-ciri
Ciri-ciri berikut berfungsi sebagai titik reka bentuk utama Laravel (di mana tidak dinyatakan secara khusus, keterangan merujuk kepada ciri-ciri Laravel&nbsp;3):      

* *Bundel* menyediakan sistem pembungkusan modular sejak dilancarkan Laravel&nbsp;3, dengan ciri gabungan sudah tersedia untuk penambahan aplikasi yang mudah. Selanjutnya, Laravel&nbsp;4 menggunakan Composer sebagai pengurus pergantungan untuk menambahkan pakej PHP khusus framework-agnostik dan Laravel yang tersedia dari repositori Packagist. 
* *Eloquent ORM* ( pemetaan objek-relasional ) adalah implementasi PHP lanjutan dari corak rekod aktif, yang menyediakan kaedah dalaman pada masa yang sama untuk menegakkan kekangan pada hubungan antara objek pangkalan data. Mengikuti corak rakaman aktif, Eloquent ORM menyajikan jadual pangkalan data sebagai kelas, dengan keadaan objeknya terikat pada baris meja tunggal. 
* *Pembina pertanyaan*, tersedia sejak Laravel&nbsp;3, menyediakan alternatif akses pangkalan data yang lebih langsung kepada Eloquent ORM. Daripada memerlukan pertanyaan SQL ditulis secara langsung, pembangun pertanyaan Laravel menyediakan satu set kelas dan kaedah yang mampu membina pertanyaan secara teratur. Ini juga membolehkan cache terpilih dari hasil pertanyaan yang dijalankan. 
* *Logik aplikasi* adalah bahagian yang tidak terpisahkan dari aplikasi yang dikembangkan, dilaksanakan baik dengan menggunakan pengendali atau sebagai bagian dari deklarasi rute. Sintaks yang digunakan untuk menentukan logik aplikasi serupa dengan yang digunakan oleh kerangka Sinatra.
* *Peralihan terbalik* menentukan hubungan antara pautan dan laluan, memungkinkan perubahan pada laluan kemudian disebarkan secara automatik menjadi pautan yang relevan. Apabila pautan dibuat dengan menggunakan nama laluan yang ada, pengenal sumber seragam (URI) yang sesuai dibuat secara automatik oleh Laravel.
* *Pengawal yang tenang* menyediakan kaedah pilihan untuk memisahkan logik di sebalik melayani permintaan HTTP GET dan POST.
* *Pemuatan* automatik kelas menyediakan pemuatan kelas PHP secara automatik tanpa memerlukan penyelenggaraan manual jalan masuk. Pemuatan atas permintaan menghalang kemasukan komponen yang tidak diperlukan, jadi hanya komponen yang sebenarnya digunakan dimuat.
* *Komposer paparan* berfungsi sebagai unit kod logik yang dapat disesuaikan yang dapat dijalankan ketika paparan dimuat.
* *Mesin* templat Blade menggabungkan satu atau lebih templat dengan model data untuk menghasilkan pandangan yang dihasilkan, melakukannya dengan menyebarkan templat ke dalam kod PHP dalam bentuk cache untuk peningkatan prestasi. Blade juga menyediakan satu set struktur kawalannya sendiri seperti pernyataan bersyarat dan gelung, yang dipetakan secara dalaman kepada rakan PHP mereka. Selanjutnya, perkhidmatan Laravel boleh dipanggil dari templat Blade, dan mesin templat itu sendiri dapat diperluas dengan arahan khusus.  
* *Kontainer IoC* memungkinkan objek baru dihasilkan dengan mengikuti prinsip inversion of control (IoC), di mana kerangka kerja memanggil kod aplikasi atau tugas khusus, dengan instansiasi dan referensi objek baru sebagai singlet .
* *Migrasi* menyediakan kawalan versi sistem untuk skema pangkalan data, sehingga memungkinkan untuk mengaitkan perubahan dalam aplikasi pangkalan kod dan perubahan yang diperlukan dalam susun atur pangkalan data. Hasilnya, fitur ini mempermudah penggunaan dan pengemaskinian aplikasi berasaskan Laravel. 
* *Penyemaian* pangkalan data menyediakan cara untuk mengisi tabel pangkalan data dengan data lalai terpilih yang dapat digunakan untuk pengujian aplikasi atau dilakukan sebagai bagian dari penyiapan aplikasi awal. 
* *Pengujian unit* disediakan sebagai bahagian tidak terpisahkan dari Laravel,   yang sendiri mengandungi ujian unit yang mengesan dan mencegah regresi dalam kerangka kerja. Ujian unit dapat dijalankan melalui yang disediakanutiliti baris perintah  .
* *Penomboran automatik* mempermudah tugas melaksanakan penomboran, menggantikan pendekatan pelaksanaan manual yang biasa dengan kaedah automatik yang disatukan ke dalam Laravel.
* *Permintaan borang* adalah ciri Laravel&nbsp;5 yang berfungsi sebagai asas untuk pengesahan input borang oleh pendengar peristiwa yang mengikat secara dalaman, yang mengakibatkan penggunaan kaedah pengesahan borang secara automatik dan penjanaan bentuk yang sebenarnya. 
* *Homestead* - mesin maya Vagrant yang menyediakan pengembang Laravel dengan semua alat yang diperlukan untuk mengembangkan Laravel secara langsung, termasuk, Ubuntu, Gulp, Bower dan alat pembangunan lain yang berguna dalam membangunkan aplikasi web skala penuh. 
* *Canvas* - platform penerbitan bertenaga Laravel yang membantu memvisualisasikan tren bulanan, melihat dari mana datangnya pembaca dan jam berapa mereka lebih suka membaca kandungan. Ciri-ciri seperti: Statistik Penerbitan, penulisan bebas gangguan, Integrasi Unsplash, Data Sosial Tersuai. 
* Koleksi Lazy - Keistimewaan kerangka PHP Laravel 6 ini, membolehkan anda menangani banyak data, sementara penggunaan memori tetap rendah. Lebih-lebih lagi, apabila anda beralih dari semua (_ ke kursor (), hanya satu model ekspresif yang dipindahkan dalam memori pada satu ketika kursor () menggunakan contoh LazyCollection.

### Pakej pihak pertama
Pakej siap pakai yang disediakan oleh Laravel melalui Composer and Packagist merangkumi yang berikut:

* *Cashier*, diperkenalkan di Laravel 4.2, menyediakan antara muka untuk menguruskan perkhidmatan penagihan langganan yang disediakan oleh Stripe, seperti mengendalikan kupon dan menghasilkan invois . 
* *Envoy*, diperkenalkan di Laravel 4.2, menyediakan sintaks yang bersih dan minimum untuk menentukan tugas biasa yang anda jalankan pada pelayan jauh anda. Dengan menggunakan sintaks gaya Blade, anda dapat dengan mudah menyiapkan tugas untuk penyebaran, perintah Artisan, dan banyak lagi. 
* *Socialite*, menyediakan mekanisme dipermudah untuk pengesahan dengan penyedia OAuth yang berbeza, termasuk Facebook, Twitter, Google, GitHub dan Bitbucket . 
* *Passport*, diperkenalkan di Laravel 5.3, menyediakan pelaksanaan pelayan OAuth2 sepenuhnya untuk aplikasi Laravel anda dalam beberapa minit. 
* *Scout*, diperkenalkan di Laravel 5.3, menyediakan penyelesaian mudah berdasarkan pemandu untuk menambahkan carian teks penuh ke model Eloquent anda. 
* *Dusk*, diperkenalkan di Laravel 5.4, menyediakan API automasi dan ujian penyemak imbas yang ekspresif dan mudah digunakan. 
* *Horizon*, diperkenalkan di Laravel 5.5, menyediakan papan pemuka yang indah dan konfigurasi berdasarkan kod untuk barisan Redis bertenaga Laravel anda. 
* *Teleskop*, diperkenalkan di Laravel 5.7, memberikan wawasan mengenai permintaan yang masuk ke dalam aplikasi anda, pengecualian, entri log, pertanyaan pangkalan data, pekerjaan beratur, surat, pemberitahuan, operasi cache, tugas terjadwal, pembuangan pemboleh ubah dan banyak lagi. 
* *Sanctum*, diperkenalkan di Laravel 7.0, menyediakan sistem pengesahan kelas bulu untuk SPA (aplikasi satu halaman), aplikasi mudah alih, dan API berasaskan token yang ringkas.  Pertama kali disebut Laravel Airlock, nama itu diganti namanya kerana pertikaian tanda dagangan mengenai nama 'Airlock.' 
* *Jetstream*, diperkenalkan di Laravel 8.0, ini menyediakan perancah aplikasi untuk Laravel. Pakej ini berkesan membina idea alat UI yang dibina pada aplikasi Laravel yang lalu yang membolehkan pengguna memilih antara dua pilihan, Livewire + Blade atau Inertia.js + Vue. Pakej ini berfungsi dengan Laravel Fortify.  Terdapat beberapa kontroversi dengan pengguna Taylor Otwell dan Laravel sejurus selepas Laravel dibebaskan kerana beberapa perancah aplikasi lama yang dipercayai tidak digunakan lagi untuk Jetstream. Sejak itu diperjelaskan bahawa ini tidak berlaku. 
* *Fortify*, diperkenalkan di Laravel 8.0, menyediakan perancah aplikasi untuk Laravel. Fortify digunakan untuk menangani pengurusan tugas pengguna biasa, berdasarkan pengesahan khas untuk menyediakan perkara seperti pasukan dan mekanisme pengesahan dua faktor. Pakej ini bekerjasama rapat dengan Laravel Jetstream.  Fortify agak berdasarkan ciri-ciri yang pada awalnya dibuat untuk Laravel Spark.
* *Breeze,* Laravel Breeze adalah pelaksanaan minimum dan sederhana dari semua ciri pengesahan Laravel, termasuk log masuk, pendaftaran, tetapan semula kata laluan, pengesahan e-mel, dan pengesahan kata laluan. Lapisan pandangan lalai Laravel Breeze terdiri dari templat Blade sederhana yang digayakan dengan Tailwind CSS. Breeze memberikan titik permulaan yang baik untuk memulakan aplikasi Laravel yang baru.

### Artisan CLI
Antara muka baris arahan (CLI) *Laravel, yang disebut Artisan*, pada awalnya diperkenalkan di Laravel&nbsp;3 dengan set keupayaan terhad. Penghijrahan Laravel kemudian ke seni bina berasaskan Komposer membolehkan Artisan memasukkan komponen yang berbeza dari kerangka Symfony, yang mengakibatkan adanya ciri tambahan Artisan di Laravel&nbsp;4.   

Ciri-ciri Artisan dipetakan ke subkomponen yang berbeza dari, menyediakan fungsi yang membantu dalam mengurus dan membina aplikasi berasaskan Laravel. Kegunaan Artisan yang biasa termasuk menguruskan migrasi dan penyemaian pangkalan data, menerbitkan aset pakej, dan menghasilkan kod boilerplate untuk pengawal dan migrasi baru; yang terakhir membebaskan pembangun daripada membuat kerangka kod yang betul. Fungsi dan kemampuan Artisan juga dapat diperluas dengan menerapkan perintah khusus baru, yang, misalnya, dapat digunakan untuk mengotomatisasi tugas berulang khusus aplikasi.   

## Persidangan

*Laracon* adalah persidangan Laravel rasmi yang berpusat di sekitar kerangka Laravel, yang meliputi pengembangan, penggunaan, dan topik pengembangan perisian umum yang berkaitan. Laracon telah berlaku di Amerika Syarikat, Eropah dan dalam talian pada masa lalu.   Biasanya, persidangan itu berlaku di Amerika Syarikat dan Eropah setiap tahun. 2017 adalah tahun pertama Laracon diadakan sebagai acara dalam talian sahaja. Tahun 2018 adalah tahun pertama Laracon diadakan di Australia. Setiap tahun persidangan mempunyai pelbagai penaja dan penganjur, tetapi Laravel, Laravel News dan UserScape biasanya menjadi penganjur utama.

Walaupun banyak persidangan Laracon dijalankan secara rasmi, sebilangan persidangan lain dijalankan dengan nama Laravel Live. Pada masa ini terdapat persidangan Laravel Live UK dan Laravel Live India setiap tahun.   Walaupun ini tidak dijalankan secara rasmi, mereka mendapat kebenaran Taylor Otwell untuk menggunakan nama Laravel.