"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > Service Container Bootstrap: Getting Started

Service Container Bootstrap: Getting Started

Published on 2024-08-07
Browse:158

Service Container Bootstrap: Getting Started

Before starting the topic, create two new files in controllers directory:

  1. destroy.php that contains the code used to delete a note from the database.
  2. store.php that contains the code to create a new note using forms and request methods.

Intro to Service Container

A Service Container is a design pattern that centralizes the management of dependencies between objects, providing a structured way to access and manage services within an application.

It acts as a registry for services within a website.

Container Class

Firstly create a file named Controller.php in Core directory. In this initialize the Container class, that is responsible for managing service bindings and resolutions.

  • bind(): Registers a service with the container.
  • resolve(): Retrieves a service from the container.
class Container {
    protected $bindings = [];

    public function bind($key, $resolver) {
        $this->bindings[$key] = $resolver;
    }

    public function resolve($key) {
        if (!array_key_exists($key, $this->bindings)) {
            throw new Exception("No matching binding found for {$key}");
        }
        $resolver = $this->bindings[$key];
        return call_user_func($resolver);
    }
}

App Class

The App class acts as a interface for the Container, providing a convenient interface for accessing services.

  • setContainer(): Sets the container instance for the App.
  • container(): Retrieves the container instance.
  • bind(): Registers a service with the container.
  • resolve(): Retrieves a service from the container.
class App {
    protected static $container;

    public static function setContainer($container) {
        static::$container = $container;
    }

    public static function container() {
        return static::$container;
    }

    public static function bind($key, $resolver) {
        static::container()->bind($key, $resolver);
    }

    public static function resolve($key) {
        return static::container()->resolve($key);
    }
}

Bootstrap

Bootstrap is a point of an application, where everything is set up and initialized.

$container = new Container();
$container->bind('Core\Database', function () {
    $config = require base_path('config.php');
    return new Database($config['database']);
});
App::setContainer($container);

In this , the bootstrap process:

  1. Creates a new Container instance ($container)
  2. Registers services with the container using the bind method (e.g., Core\Database)
  3. Sets the container for the App using App::setContainer($container)

Controller

Services can be resolved from the container in controllers using the App::resolve() method.

$db = App::resolve('Core\Database');

Now a service container is properly built and you can see the project is working well.

I hope that you have clearly understood it.

Release Statement This article is reproduced at: https://dev.to/ghulam_mujtaba_247/service-container-bootstrap-getting-started-293j?1 If there is any infringement, please contact [email protected] to delete it
Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3