Container

Pengetahuan Dasar

Container hanyalah cara mengelola pembuatan object. Anda dapat menggunakannya untuk menentukan pembuatan objek kompleks, memungkinkan anda me-resolvenya di seluruh aplikasi anda hanya dengan satu baris kode. Anda juga dapat menggunakannya untuk 'meng-inject' dependensi ke kelas dan controller anda.

Container membantu membuat aplikasi anda lebih fleksibel dan mudah diuji. Karena anda dapat mendaftarkan implementasi alternatif interface bia container ini, anda dapat mengisolasi kode yang anda uji dari dependensi eksternal menggunakan teknik stub dan mocking.

Mendaftarkan Object

Mendaftarkan resolver ke container:

Container::register('mailer', function () {
    $transport = Swift_MailTransport::newInstance();

    return Swift_Mailer::newInstance($transport);
});

Mantap! Sekarang kita telah mendaftarkan resolver untuk SwiftMailer ke container kita. Namun, bagaimana jika kita tidak ingin container membuat instance mailer baru setiap kali kita membutuhkannya?

Mungkin kita hanya ingin container mereturn instance yang sama setelah instance awal dibuat. Mudah saja, cukup beri tahu si container bahwa objectnya harus singleton:

Mendaftarkan singleton object ke container:

Container::singleton('mailer', function () {
    // ..
});

Anda juga dapat mendaftarkan instance object yang sudah ada sebelumnya sebagai singleton ke container.

Mendaftarkan instance yang ada ke container:

Container::instance('mailer', $instance);

Me-resolve Object

Setelah SwiftMailer terdaftar ke container, kita dapat dengan mudah me-resolvenya:

$mailer = Container::resolve('mailer');