Hi, selamat sore, di kesempatan akan membawakan mengenai fungsi fill pada laravel Memahami Penggunaan Service Container di Laravel â Part 1 simak selengkapnya
Jika kita ditanya apa alpa satu keunggulan Laravel, jawab saja Service Container. Ya, karakteristik ini merupakan alpa satu karakteristik yang menarik di Laravel. Fungsi utamanya melakukan automatic resolution untuk class dependency. Apa itu? yuk kita pelajari..
Class dependency pada pemrograman adalah hal dimana kita membutuhkan class lain untuk membuat object dari sebuah class. Misalnya ingat-ingat class Dompet dan Customer berikut:
file: app/Dompet.php
<?php namespace App;class Dompet
private $saldo; public function __construct($saldo = 100)
$this->saldo = $saldo
public function cekIsi()
return $this->saldo;
file: app/Customer.php
<?php namespace App;class Customer
private $dompet; public function __construct(Dompet $dompet)
$this->dompet = $dompet;
public function cekDompet()
return $this->dompet->cekIsi();
Terlihat disini, untuk membuat instance dari class Customer, kita membutuhkan instance dari class Dompet. Untuk membuat object dari class Dompet, kita juga perlu memberikan angka kandungan dompetnya, andaikan tidak diisi maka akan default ke 100.
Tanpa memanfaatkan Service Container, syntax untuk membuat object dari class Customer akan seperti berikut:
Terlihat disini, untuk membuat object dari class Customer kita kudu menginisialisasi class yang menjadi dependency-nya (class Dompet).
Masalah yang ada dari dependency ini diantaranya
- Bagaimana andaikan class Customer tidak cuma bergantung pada class Dompet? Misalnya, Customer juga bergantung pada class KTP, KartuMember, Kontak, dan lainnya?
- Bagaimana andaikan class Dompet juga memiliki dependency class yang lain?
- Bagaimana andaikan terdapat banyak sekali dependency yang baku bergantung satu sama lain?
- Seberapa banyak syntax yang kudu kita tulis untuk membuat object dari class Customer?
Tentunya, syntax untuk membuat object dari class Customer ini akan amat panjang.
Service Container hadir untuk menyelesaikan masalah ini. Fitur automatic resolution, memungkinkan kita untuk memiliki object dari class Customer, minus kudu menginisialisasi dependency-nya. Misalnya seperti ini:
Wow!
Terlihat disini, kita tidak pernah menginisialisasi dependency dari class Customer. Tapi, kala kita mendatangkan app(âApp\Customerâ), Laravel secara ajaib mengetahui apa saja dependency dari class Customer dan membuatkannya untuk kita. Bayangkan andaikan ada ratusan dependency yang baku bergantung, karakteristik Service Container ini akan amat membantu efisiensi koding.
Semua keajaiban karakteristik ini terjadi berkat penggunaan Reflection API. Untuk memahaminya, silahkan buka kembali pembahasan Reflection API di ayat Konsep Dasar.
Sesuai namanya, Service Container berfungsi sebagai sebuah tempat dimana kita bisa menyimpan berbagai hal dari string biasa, closure, object, class, dll. Ketika kita menyimpan âsesuatuâ ke pada Service Container dinamakan binding. Sementara kala kita memetik âsesuatuâ dari Service Container dinamakan resolve.
Proses binding ini seperti mengisi array asosiatif, beres kita kudu mempersiapkan key dan value nya. Ketika melakukan resolve, sama seperti array asosiatif, kita menggunakan key nya untuk memetik value yang telah disimpan.
Untuk melakukan binding, kita bisa menggunakan app()->bind(âkeyâ, âvalueâ);. Contohnya, andaikan kita ingin menyimpan string ke pada Service Container kita bisa menggunakan closure:
Untuk memetik angka yang telah disimpan di Service Container, kita bisa menggunakan app(âkeyâ):
Biasanya cara binding dilakukan di Service Provider pada method register. Di pada Service Provider, untuk mendapatkan instance dari Service Container bisa menggunakan $this->app. Misalnya, andaikan kita akan melakukan binding diatas pada MarkdownServiceProvider yang telah kita buat pada pembahasan sebelumnya, syntaxnya akan seperti ini:
file: app/Providers/MarkdownServiceProvider.php
....
public function register()
$this->app->singleton('markdown', function()
return $this->markdown;
); $this->app->bind('apa itu laravel?', function()
return 'Laravel adalah framework Laravel paling keren dan elegan.';
);
....
Ketika kita berikhtiar melakukan resolve, akan ajek berhasil.
Oke, abdi rasa ini cukup untuk memberikan gambaran cara binding dan resolve pada Service Container. Selanjutnya, kita akan mempelajari jenis binding lainnya. Tentunya, yang bertambah menarik dan menantang.. âº
Resolve dari Service Container
Selain menggunakan app(âkeyâ), kita juga bisa menggunakan app()[âkeyâ] dan app()->make(âkeyâ) untuk melakukan resolve nilai/object dari Service Container
Materi ini merupakan alpa satu pembahasan pada ayat Arsitektur Laravel di buku Menyelami Framework Laravel. Ada juga pembahasan aplikatif untuk poin fundamental di Laravel yang lain seperti Service Provider, Facade, Contract, Middleware, dll. Download di https://leanpub.com/bukularavel
Sekian detil tentang Memahami Penggunaan Service Container di Laravel â Part 1 semoga tulisan ini berfaedah terima kasih
Artikel ini diposting pada kategori , tanggal 04-08-2019, di kutip dari https://medium.com/laravel-indonesia/memahami-penggunaan-service-container-di-laravel-part-1-6510cfbbaeb6
Post a Comment
Post a Comment