Ads 970x90

List Labels

iklan banner

Newsletter

Memahami Penggunaan Service Container Di Laravel — Part 1 Fungsi Fill Pada Laravel

Post a Comment

Memahami Penggunaan Service Container di Laravel — Part 1

Hi, selamat sore, di kesempatan akan membawakan mengenai fungsi fill pada laravel Memahami Penggunaan Service Container di Laravel — Part 1 simak selengkapnya 

Rahmat Awaludin

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:

Tanpa Service Container

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:

Dengan Service Container

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:

Simple binding

Untuk memetik angka yang telah disimpan di Service Container, kita bisa menggunakan app(‘key’):

Simple resolve

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.

Resolve binding dari Service Provider

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

Related Posts

Post a Comment