"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 서비스 컨테이너 부트스트랩: 시작하기

서비스 컨테이너 부트스트랩: 시작하기

2024-08-07에 게시됨
검색:269

Service Container Bootstrap: Getting Started

주제를 시작하기 전에 컨트롤러 디렉터리에 두 개의 새 파일을 만듭니다.

  1. 데이터베이스에서 메모를 삭제하는 데 사용되는 코드가 포함된 destroy.php.
  2. 양식 및 요청 방법을 사용하여 새 노트를 생성하는 코드가 포함된 store.php.

서비스 컨테이너 소개

서비스 컨테이너는 객체 간의 종속성 관리를 중앙 집중화하여 애플리케이션 내에서 서비스에 액세스하고 관리하는 구조화된 방법을 제공하는 디자인 패턴입니다.

웹사이트 내 서비스에 대한 레지스트리 역할을 합니다.

컨테이너 클래스

먼저 Core 디렉터리에 Controller.php라는 파일을 만듭니다. 여기서는 서비스 바인딩 및 해결을 관리하는 컨테이너 클래스를 초기화합니다.

  • bind(): 컨테이너에 서비스를 등록합니다.
  • resolve(): 컨테이너에서 서비스를 검색합니다.
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 클래스는 컨테이너의 인터페이스 역할을 하며 서비스에 액세스하기 위한 편리한 인터페이스를 제공합니다.

  • setContainer(): 앱의 컨테이너 인스턴스를 설정합니다.
  • container(): 컨테이너 인스턴스를 검색합니다.
  • bind(): 컨테이너에 서비스를 등록합니다.
  • resolve(): 컨테이너에서 서비스를 검색합니다.
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);
    }
}

부트스트랩

부트스트랩은 모든 것이 설정되고 초기화되는 애플리케이션의 지점입니다.

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

이 부트스트랩 프로세스는 다음과 같습니다.

  1. 새 컨테이너 인스턴스를 생성합니다($container)
  2. 바인드 메서드(예: Core\Database)를 사용하여 컨테이너에 서비스를 등록합니다.
  3. App::setContainer($container)를 사용하여 앱에 대한 컨테이너를 설정합니다.

제어 장치

App::resolve() 메서드를 사용하여 컨트롤러의 컨테이너에서 서비스를 확인할 수 있습니다.

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

이제 서비스 컨테이너가 제대로 구축되었으며 프로젝트가 제대로 작동하는 것을 볼 수 있습니다.

명확하게 이해하셨기를 바랍니다.

릴리스 선언문 이 글은 https://dev.to/ghulam_mujtaba_247/service-container-bootstrap-getting-started-293j?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]에 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3