composier-require-checker를 통해 오류 방지/한눈에 프로그램 라이브러리 사용 가능

6808 단어 LaravelPHPtech

composer-require-checker


https://github.com/maglnet/ComposerRequireChecker
composier-require-checker가 사용하는 프로그램 라이브러리 php를
composer.json (require) 으로 모두 기록할 수 있는 검사기입니다.(개발 환경에서 사용되는 라이브러리 제외)

장점

  • 개발 환경에서 사용되는 (require-dev) 라이브러리가 정식으로 실행되는 코드에서 사용되는 것을 방지하는 오류
  • 아래 글에서 말한 대책
  • http://dqn.sakusakutto.jp/2014/07/php_composer_require-dev.html
  • composer.json을 보면 실제 코드에 사용되는 라이브러리 프레임워크를 한눈에 알 수 있다
  • 예를 들어 laavel/laavel을 설치한 후illuminate/support도 덩굴을 따라 참외를 만져서compooser를 설치한다.json의 Require에 기록되지 않았습니다.Illuminate\Support\Facades\DB를 사용하는 경우 compooser.json에 기록되어 있지 않기 때문에 이 도구로 검출됩니다.
  • 보태다

  • 최신 버전(4.0.0.0)은 >=PHP8입니다.0.2
  • composer-require-checker.phar 다운로드 및 사용(Laavel 경로에 설정)
  • 내 환경은 PHP7이다.4,v3이니까요.8.0 활용
    https://github.com/maglnet/ComposerRequireChecker
  • 실행 결과


    # php composer-require-checker.phar check composer.json
    ComposerRequireChecker 3.8.0@537138b833ab0f9ad72b667a72bece2a765e88ab
    The following 10 unknown symbols were found:
    +--------------------------------------+--------------------+
    | Unknown Symbol                       | Guessed Dependency |
    +--------------------------------------+--------------------+
    | DB                                   |                    |
    | GraphQL\Type\Definition\ResolveInfo  |                    |
    | gzdecode                             | ext-zlib           |
    | json_decode                          | ext-json           |
    | json_encode                          | ext-json           |
    | JSON_UNESCAPED_UNICODE               | ext-json           |
    | mb_strlen                            | ext-mbstring       |
    | mb_strpos                            | ext-mbstring       |
    | simplexml_load_file                  | ext-SimpleXML      |
    | Symfony\Component\DomCrawler\Crawler |                    |
    +--------------------------------------+--------------------+
    

    대응

  • 1.ext-xxx
  • 기본적으로 ext-xxx를 합쳤지만composier.json에 기록되지 않았기 때문에 오류가 발생했습니다
  • "composier require ext-json"으로 compooser를 진행합니다.json 업데이트
  • https://engineering.otobank.co.jp/?page=1600933810
  • 2.composer.json에 기재된 라이브러리 프레임워크를 이용한 의존 포장
  • 예: Symfony\Component\DomaCrawler\Crawler
  • composier require symfony/dom-Crawler로 업데이트
  • 3.라벨이라면 클래스 별명을 이용하면 composier.json에 기재되어도 오류가 발생하기 때문에 클래스 별명을 사용하지 않는 형식으로 수정
  • 문제.


    클래스 별칭을 사용하는 DB(Illuminate\Support\Facades\DB)의 영향입니까?
    'illuminate/support'에 대한composer require도 변하지 않았다.
    DB 섹션을\Illuminate\Support\Facades\DB로 덮어쓰면 오류가 발생하지 않습니다.
    Your requirements could not be resolved to an installable set of packages.
    
      Problem 1
        - Root composer.json requires illuminate/database ^8.76, found illuminate/database[v8.76.0, v8.76.1, v8.76.2, 8.x-dev] but these were not loaded, likely because it conflicts with another require.
    
    Installation failed, reverting ./composer.json and ./composer.lock to their original content.
    

    수정


    $sql = DB::table('books')
    

    $sql = \Illuminate\Support\Facades\DB::table('books')
    
    실행 결과: (정상적으로 종료)
    # php composer-require-checker.phar check composer.json
    ComposerRequireChecker 3.8.0@537138b833ab0f9ad72b667a72bece2a765e88ab
    There were no unknown symbols found.
    

    좋은 웹페이지 즐겨찾기