[FormalBears] Configurable BEAR.Sunday

개시하다
2018년 봄에 열린 베어.선데이 메트 업@iteman에서는 베어의 메타 프레임FormalBears을 공유했다.FormalBears는 한정 공개 프로젝트로 작가의 동의를 얻어 작업 중에 그 포크판을 사용했습니다.
모듈 설정 언어 기능
FormalBears는 다양한 기능이 있는데 그 기초가 되는 기본 기능으로'언어 구성 기능'으로 자리매김했다.아래와 같이 할 수 있다.
  • 설정 파일의 설정(YAML)과 그람 정의의 컴파일1을 통합
  • 설정 통합(기본값,development/production 등 환경별 리셋)
  • 환경 변수 통합(설명 예: url: '%env(DATABASE_URL)%'
  • 한마디로'Symfony 스타일'이라고 할 수 있습니다.상술한 1.이미 소개했습니다symfony/config.이 보도는 상술한 것이다.아주 간단한 실복 시연을 소개합니다.
    지식 보유: 응용 프로그램 상하문 및 환경
    BEAR에서 응용 프로그램의 구성은 アプリケーションコンテキスト23에 의해 결정된다(다른 WAF에서 환경 변수의 환경 키, 예를 들어 SymfonyAPP_ENV의 값이 결정되지만 BEAR의 구조는 다르다)4.실제 업무에서 실행 프로그램環境에 따라 서로 다른 설정으로 전환하고 사용자 정의와 환경에 대응하는 응용 상하문(예를 들어 prod, dev, 설정에 대응하는モジュール(예: ProdModule, DevModule등이 필요하다.이것은 매우 일반적이며 베어 사용자는 누구나 할 수 있는 일이다.
    기본값, 환경별 덮어쓰기
    다음은 본론.응용 프로그램 전체로 볼 때 설정은 상당히 방대해질 것이다.각 모듈의 규약에 따라 설정을 설정하면 응용 프로그램의 유지보수성이 어려울 것이다.
    FormalBears는
  • 모듈에 설정 영역을 정의합니다
  • .
  • 모듈 단위로 지정 デフォルト 또는
  • 환경 설정 파일環境毎のオーバーライド에 설정된 프레임워크를 제공합니다.
  • 최소값의 설치 예
    간단한 예를 들어 보자.가령
  • Github のユーザー情報一覧を表示するAPIクライアント.
  • 설정 항목은 API의 URL과 표시할 사용자 이름 목록입니다.
  • "API의 URL"은共通設定, "객체 사용자 이름 목록 표시는環境によって切り替えたい입니다.
  • FormalBears의 설정은 다음과 같습니다.
    5
    주입 방법 등에 대한 자세한 내용은 생략했지만, 아래 창고에 실행 코드를 넣었다.

    FormalBears가 상하문을 읽을 수 있도록 BEAR 설치 기본값bootファイルkumamidori/FormalBearsDemo의 설치를 변경했습니다.
    FormalBears 설치
    FormalBears의 서브셋 포크 버전 소스 코드를 공개합니다.
  • 4
  • 마운트 설정과 관련된 설치 코드를 게재합니다.
    
        protected function loadConfiguration(LoaderInterface $loader)
        {
            // モジュール毎(個々のモジュールの設定)
            $loader->load($this->appMeta->configDir.'/modules/*'.$this->appMeta->configExtension, 'glob');
    
            foreach ($this->appMeta->contexts as $context) {
                if (is_dir($this->appMeta->configDir.'/modules/'.$context)) {
                    // モジュール毎、コンテキスト別オーバーライド
                    $loader->load($this->appMeta->configDir.'/modules/'.$context.'/**/*'.$this->appMeta->configExtension, 'glob');
                }
                // コンテキストグローバル
                $loader->load($this->appMeta->configDir.'/contexts/'.$context.$this->appMeta->configExtension, 'glob');
            }
        }
    
    
    사용한 소감.
  • 기본값과 환경별 차이를 쓰는 방법은 실무용역이라면 편리하다.
  • (mitup 사람에 대한 symfony/config 사용 소감) 지금까지 생략된 설정을 컴파일링 무대에서 완성할 수 있다는 점에서 기쁘다.
  • 결점
    언어 기능이 설정되지 않은 경우와 비교하면 다음과 같은 단점이 있습니까?
  • 직관적이지 않게 변한다(틀의 책임과 규정을 늘린다)
  • 초보자에게는 어려워
  • FormalBears가 상하문을 읽도록 하기 때문에 전역값이 하나 증가$GLOBALS['context']
  • gramer 정의를 쓰기 전에 조금 익숙해져야 한다
  • 그라머가 정의한 디버깅 비용
  • 보충1:symfony/config의 특성
    (이것도 MIT up의 대화 주제입니다. 다시 녹음해 보겠습니다.)
    Symfony 스타일은 설정을 각 응용 프로그램이 각각 존재하는 개별 과제로 간주하는 것이 아니라 특정한 공통성을 가진 구조 자체를 하나의 영역으로 포착한다.설정된 상하문, 파라미터의 그룹, 데이터 구조, 유형 등 문제의 구조를 간단하고 알기 쉽게 표현하기를 바란다.
    보충2: 인프라 관련 설정
    이 글에는 인프라 시설과 관련된 설정과 환경 변수의 처리가 언급되지 않았다.나는 다음에 다시 다른 보도에서 소개하고 싶다.
    끝맺다
    Formal Bears의 구성 언어 기능과 최소값 사용 예를 소개하고 소스 코드를 공개했다.
    베어는 참신함을 지닌 프레임이지만 최근 기존 기술과 결합을 통해서도 새로운 가능성을 개척할 수 있다는 것을 배웠다.
    FormalBears   The Birth of FormalBears - A new META for BEAR.Sunday applications
      symfony/config 합병 예시 소개
      공식 브로셔: 어플리케이션
      애플리케이션 - Qita
      공식 브로셔: 모듈 - 환경

    좋은 웹페이지 즐겨찾기