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

Laravel Unwrapped: Session, Auth dan Cache

by
Difficulty:BeginnerLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by Dika Budiaji (you can also view the original English article)

Dalam beberapa tahun terakhir, Laravel telah menjadi salah satu paling menonjol framework perangkat lunak engineer menggunakan untuk membangun aplikasi web mereka. Mirip dengan popularitas yang dinikmati CodeIgniter pada masa jayanya, Laravel telah dipuji untuk kemudahan penggunaan, keramahan untuk pemula dan dengan kepatuhan terhadap standar industri.

Pengenalan

Satu hal meskipun adalah bahwa tidak banyak programer mengambil keuntungan dari Laravel's berbasis komponen sistem. Sejak konversi yang bertenaga composer-powered, Laravel 4 telah menjadi sebuah sistem yang sangat modular, mirip dengan kerangka seperti Symfony. Ini disebut Illuminate kelompok komponen, yang menurut pendapat saya, tidak framework sebenarnya itu sendiri, tetapi adalah kompilasi dari perpustakaan yang berpotensi dapat menggunakan framework. Laravel's sebenarnya framework diwakili oleh Laravel skeleton aplikasi (ditemukan pada GitHub repositori laravel laravel) yang menggunakan komponen ini untuk membangun aplikasi web.

Dalam tutorial ini, kita akan menyelam ke dalam kelompok komponen ini, belajar bagaimana mereka bekerja, bagaimana mereka digunakan dengan framework, dan bagaimana kita dapat memperluas fungsi mereka.

Komponen Session

Komponen Laravel session menangani sesi untuk aplikasi web. Itu membuat penggunaan sistem driver-based yang disebut manajer Laravel, yang bertindak sebagai sebuah factory dan wrapper untuk driver apapun terletak di file konfigurasi. Seperti tulisan ini, komponen sesi yang memiliki driver untuk:

  • file - sopir berbasis file sesi yang mana sesi data disimpan dalam sebuah file yang dienkripsi.
  • Cookie - sopir berbasis cookie sesi yang mana sesi data dienkripsi dalam cookie pengguna.
  • database - data sesi tersimpan dalam database apapun dikonfigurasi untuk aplikasi.
  • apc - sesi data disimpan dalam APC.
  • memcached - sesi data disimpan dalam Memcached.
  • Redis - sesi data disimpan dalam Redis.
  • array - sesi data disimpan dalam sebuah array PHP. Perhatikan bahwa pengemudi sesi array tidak mendukung kegigihan dan biasanya hanya digunakan dalam perintah konsol.

Penyedia layanan

Kebanyakan Laravel pengguna tidak menyadari, tetapi sebagian besar tentang bagaimana Laravel bekerja, adalah dalam beserta penyedia. Mereka pada dasarnya bootstrap file untuk setiap komponen dan mereka adalah disarikan cukup sehingga pengguna dapat bootstrap komponen, dengan cara apapun.

Sebuah penjelasan kasar bagaimana ini bekerja di bawah ini:

  1. Komponen Laravel aplikasi dimulai. Ini adalah pendorong utama dari seluruh kerangka, bertanggung jawab untuk menangani permintaan HTTP, menjalankan penyedia layanan, serta bertindak sebagai wadah ketergantungan Framework.
  2. Setelah service provider running, register metode ini dijalankan. Hal ini memungkinkan kita untuk instantiate mana komponen yang kita inginkan.
    • Perlu diingat bahwa semua penyedia layanan memiliki akses ke aplikasi Laravel utama (melalui $this->app), yang akan membiarkan layanan penyedia mendorong contoh kelas diselesaikan ke dalam wadah ketergantungan.
  3. Setelah ketergantungan ini dimuat, kita harus bebas untuk menggunakannya dengan memanggil pada container tersebut, misalnya, melalui Laravel di facade sistem, App::make.

Kembali ke sesi, mari kita cepat melihat di SessionServiceProivider:

Dua metode ini dipanggil oleh fungsi register(). Yang pertama, registerSessionManager(), dipanggil untuk mendaftar awalnya SessionManager. Kelas ini extend Manajer yang saya sebutkan di atas. Yang kedua, registerSessionDriver() register sesi handler untuk manajer, berdasarkan apa yang kita telah mengkonfigurasi. Ini akhirnya panggilan metode ini dalam kelas Illuminate\Support\Manager:

Dari sini, kita bisa melihat bahwa berdasarkan nama driver, dari file konfigurasi, spesifik metode ini disebut. Jadi, jika kita memiliki ini dikonfigurasi untuk menggunakan Pengatur sesi file, itu akan memanggil metode ini dalam kelas SessionManager:

Kelas sopir kemudian disuntikkan ke Store kelas, yang bertanggung jawab untuk memanggil metode sebenarnya sesi. Hal ini memungkinkan kita benar-benar memisahkan pelaksanaan SessionHandlerInterface dari SPL ke driver, kelas Store memfasilitasi itu.

Menciptakan Handler sesi kita sendiri

Mari kita membuat kita sendiri Handler sesi, sesi MongoDB handler. Pertama, kita akan perlu untuk membuat MongoSessionHandler di dalam Laravel proyek contoh yang baru diinstal. (Kami akan dapat meminjam banyak dari Symfony\Component\HttpFoundation\Session\Storage\Handler\MongoDbSessionHandler).:

Anda harus menyimpan ini dalam folder vendor/laravel/framework/src/Illuminate/Session Untuk keperluan proyek ini, kami akan menaruhnya di sini, tapi idealnya file ini harus dalam namespace perpustakaan sendiri.

Selanjutnya, kita perlu memastikan bahwa Manajer kelas bisa memanggil driver ini. Kita dapat melakukan ini dengan memanfaatkan metode Manager::extend. Buka vendor/laravel/framework/src/Illuminate/Session/SessionServiceProvider.php dan tambahkan kode berikut. Idealnya, kita harus extend  service provider, tetapi itu adalah di luar cakupan tutorial ini.

Pastikan untuk memperbarui register() metode untuk memanggil metode ini:

Selanjutnya, kita perlu mendefinisikan konfigurasi Mongo DB. Buka app/config/session.php dan menentukan pengaturan konfigurasi berikut:

Sementara kita pada file ini, kita juga harus memperbarui konfigurasi driver atas:

Sekarang, coba dan mengakses halaman utama (biasanya, localhost/somefolder/public). Jika Halaman ini beban tanpa menampilkan halaman WHOOPS, kemudian Selamat, kami telah berhasil membuat driver sesi baru! Menguji it out dengan menetapkan beberapa data dummy pada session, melalui Session::set() dan kemudian echoing kembali melalui Session::get().

Auth komponen

Komponen Laravel Auth menangani otentikasi pengguna untuk framework, serta manajemen password. Apa yang telah dilakukan komponen Laravel di sini adalah untuk menciptakan suatu penafsiran abstrak sistem manajemen pengguna yang khas yang dapat digunakan di kebanyakan aplikasi web, yang pada gilirannya membantu pemrogram dengan mudah menerapkan sistem login. Seperti komponen sesi, itu juga membuat menggunakan Laravel Manager. Saat ini, komponen Auth memiliki driver untuk:

  • eloquent - hal ini membuat penggunaan ORM built-in Laravel yang disebut Eloquent. Ini juga menggunakan User.php kelas yang pra-dibuat di dalam models folder.
  • database - ini menggunakan koneksi database apapun dikonfigurasi secara default. Itu membuat penggunaan GenericUser kelas untuk mengakses data user.

Karena ini mengikuti implementasi sama sebagai komponen Session, service provider ini sangat mirip dengan apa yang telah kita lihat di atas:

Di sini, kita dapat melihat bahwa ini pada dasarnya menciptakan kelas AuthManager bahwa membungkus di sekitar driver apapun kita sedang menggunakan, serta bertindak sebagai sebuah factory untuk itu. Di dalam AuthManager, lagi menciptakan driver yang sesuai, dibungkus di sekitar kelas Guard, yang bertindak dengan cara yang sama sebagai Store kelas dari Session.

Membuat sendiri Auth Handler

Seperti sebelumnya, mari kita mulai dengan membuat MongoUserProvider:

Hal ini penting untuk mengambil catatan di sini bahwa saya tidak memeriksa terhadap password hased, hal ini dilakukan untuk mudahnya untuk membuatnya lebih mudah pada bagian kami untuk membuat dummy data dan tes ini kemudian. Dalam kode produksi, Anda perlu Pastikan hash password. Periksa kelas Illuminate\Auth\DatabaseUserProvider untuk sebuah contoh yang bagus tentang cara untuk melakukan ini.

Setelah itu, kita perlu mendaftar callback kustom driver kami pada AuthManager. Untuk melakukannya, kita perlu memperbarui pservice provider' register metode:

Terakhir, kita juga perlu untuk memperbarui file konfigurasi auth.php untuk membuat menggunakan driver Mongo, serta memberikan nilai konfigurasi Mongo yang tepat:

Pengujian ini sedikit rumit, untuk melakukannya, menggunakan Mongo DB CLI untuk memasukkan pengguna baru ke dalam koleksi:

Sekarang, kita uji dengan mencoba panggilan metode Auth::validate:

Ini harus membuang bool(true). Jika benar, maka kami telah berhasil membuat sendiri Auth driver

Komponen Cache

Komponen Laravel Cache menangani mekanisme caching untuk digunakan dalam framework. Seperti kedua komponen yang telah kita bahas, hal ini juga membuat menggunakan Laravel Manager (Apakah Anda melihat pola?). Komponen Cache memiliki driver untuk:

  • apc
  • memcached
  • Redis
  • file - berkas cache. Data disimpan ke app/storage/cache path.
  • database - database-based cache. Data disimpan ke baris ke dalam database. Skema database yang dijelaskan di dokumentasi Laravel.
  • array - data "cache" dalam array. Perlu diingat bahwa array cache tidak terus-menerus dan dibersihkan di setiap halaman load.

Karena ini mengikuti implementasi sama sebagai kedua komponen yang telah kita bahas, Anda dapat dengan aman berasumsi bahwa penyedia layanan itu cukup serupa:

Metode register() di sini menciptakan CacheManager, yang lagi bertindak sebagai pembungkus dan factory untuk driver. Dalam manager, itu membungkus driver di sekitar kelas Repository, mirip dengan kelas Store dan Guard.

Membuat sendiri Handler Cache

Membuat MongoStore, yang harus extend Illuminate\Cache\StoreInterface:

Kita juga harus menambahkan Mongo callback kembali ke manager:

Akhirnya, kita akan perlu untuk memperbarui file konfigurasi cache.php:

Sekarang, mencoba untuk menggunakan Cache::put() dan Cache::get() metode. Jika dilakukan dengan benar, kita harus dapat menggunakan MongoDB untuk men-cache data!

Kesimpulan

Dalam tutorial ini, kita belajar tentang hal berikut:

  • Laravel's berbasis komponen sistem disebut Illuminate, yang digunakan oleh framework Laravel.
  • Laravel Service Providers dan sedikit tentang bagaimana mereka bekerja.
  • Laravel Manager system, yang bertindak sebagai pembungkus dan factory untuk driver.
  • Session, Auth dan Cache komponen dan cara membuat driver baru untuk masing-masing.
  • Store, Guard, dan Repository perpustakaan yang menggunakan driver ini.

Mudah-mudahan ini akan membantu pemrogram membuat driver mereka sendiri dan memperluas fungsi framework Laravel.

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.