>  기사  >  백엔드 개발  >  서비스 컨테이너 부트스트랩: 시작하기

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

PHPz
PHPz원래의
2024-07-16 16:21:59587검색

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. 바인드 메소드(예: CoreDatabase)를 사용하여 컨테이너에 서비스를 등록합니다
  3. App::setContainer($container)를 사용하여 앱에 대한 컨테이너를 설정합니다.

제어 장치

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

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

이제 서비스 컨테이너가 제대로 구축되어 프로젝트가 잘 진행되는 것을 볼 수 있습니다.

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

위 내용은 서비스 컨테이너 부트스트랩: 시작하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.