PHP Composer의 내용, 원인 및 방식

10152 단어 laravelcomposerphp

가방 관리자 라벨과 다른 프레임워크에 사용된 베일을 벗겨보도록 하겠습니다.


개발자들이 건식 방법의 힘과 장점을 깨달은 이래로 많은 구조와 창고는 모두 사유화되고 기원된 것이다.
만약 당신이 나 같은 사람이라면, 당신은 "왜 이 모든 새로운 프레임워크는 직접 다운로드를 허락하지 않습니까.zip? 왜 나는 이 새 컴파일러를 설치하여 프레임워크를 다운로드해야 합니까?"라고 말할 수 있습니다.
내가 CodeigniterCakePHP2를 사용했을 때, 나는 단지 다운로드했을 뿐이다.zip 파일, 프로젝트 디렉터리에 압축을 풀고 개발을 시작합니다.깔끔하죠?계속 읽어 주세요.
그리고 나는 2015년에 새 버전의 CakePHP3를 목격했다.이것은 나로 하여금composer 다운로드 프레임워크를 사용하게 하였는데, 나는 그것에 대해 매우 낯설다.나는 이것이 나를 위해 얼마나 많은 시간과 두통을 절약할 수 있는지 깨달을 때까지 불평해 왔다.

기타 그것은 무슨 작곡가입니까?


Composer is a dependency manager and autoloading expert for PHP.


당신은 들어보거나 사용한 적이 있습니까?(또는 실) 혹은, 만약 당신이 루비라면, 묶음기는 틀림없이 당신의 초보가 아닐 것이다. 는 PHP 세계에 유사한 기능을 제공합니다.이전에는 PEAR(PHP 확장 및 응용 프로그램 저장소)이었습니다.
여기서 주의해야 할 중요한 것은 소스 패키지는 보통 npm 에서 다시 인코딩을 하고,composer는 다른 위치를 지정하지 않으면 의존 항목을 다운로드합니다.Packagist는 Git/Svn 저장소의 코드를 그대로 유지하고 업데이트합니다.개인 패키지를 사용하거나 위탁 관리를 통해 개인 저장소를composer와 함께 사용할 수도 있습니다.
나는 이론을 싫어한다.우리들은 실제적인 대화를 좀 진행하자.

창작자 작곡가의 아픔


다음은 작곡가가 경감한 고통이다.

포장사 의존 관리



프레임워크를 사용하여 새 프로젝트를 처리할 때, 업데이트에 의존합니다.오류 복구와 새로운 기능이 있는 새 버전을 발표했을 때, 보안, 성능 및 기타 이유로 프레임워크를 계속 업데이트해야 합니다.
그러나 기존 파일을 수동으로 다운로드하고 교체하며 다시 테스트하는 것은 고통스럽다.시간이 필요해.이것이 바로 그렇게 많은 낡은 코드 라이브러리가 더 이상 지원되지 않는 프레임워크 버전에 의존하는 이유이다.유류 사업에 종사하는 것은 우리 모두가 피하려고 하는 일이지 않습니까?

프로젝트 디렉토리 크기



작성하기 전에 프로젝트 디렉터리의 크기가 매우 컸다.우리는 프로젝트가 의존하는 모든 라이브러리를 가지고 이 프로젝트를 USB로 전달하거나 VCS(git)의 역사를 오염시킬 것입니다.
Composer 입력 - 크기를 20% 이하로 줄입니까?composer.lock 파일 덕분에 우리는 프로젝트의 의존항을 보존하지 않고 벌칙을 벗어날 수 있고 버전이 일치하지 않는 것을 피할 수 있습니다.

sad fact - Codeigniter 3 still uses the traditional download system.


디버그 시간


프로젝트에 사용되는 라이브러리나 프레임워크는 다른 라이브러리에 의존합니다. (체인은 계속됩니다...)이 프레임워크는 라이브러리의 버전 X를 사용하고 다른 라이브러리는 같은 라이브러리의 버전 Y를 사용하고 있을 수 있습니다.
일부 충돌이나 호환되지 않기 때문에, 당신은 줄곧 실수를 하고 있으며, 반드시 많은 시간을 들여야만 문제의 근원을 찾을 수 있습니다.더 많은 - composer는 적당한 버전의 라이브러리 복사본만 보존하거나 설치 요청을 거부합니다.

자동 로드


그 긴 리스트require 문구 기억나세요?프로젝트 규모가 증가함에 따라 우리는 모든 파일에 포함해야 하는 파일 수량도 증가할 것이다.PHP 자동 로딩은 구제 역할을 하지만 의존 관계가 증가함에 따라 설정과 유지보수가 필요하다.비교적 토론이 적은 작곡가의 강력한 기능은 자동으로 불러오는 것이다.PSR-0 , 클래스 매핑 및 파일 자동 로드를 지원합니다.우리는 서류 하나만 있으면 완성할 수 있다.간단한 명칭 공간을 사용하여 개발 시간을 누리다.

Less known fact - Composer provides three different levels of autoloader optimisation for your different level of needs.


비교적 단단하다 긴 설치 프로그램


PSR-4
라이브러리를 다운로드하여 설정하고 설치하려면 보통 한 단계 이상의 절차가 필요합니다.소프트웨어 패키지 관리자는 사용자가 이러한 과정을 따르지 않고 오류를 불평할 때 지원 질문에 대답하기 위해 문서에 상세한 설치 과정을 작성해야 한다. 는 그들의 복음이다.
자동 실행 가능한 절차를 쉽게 작성하고 패키지 다운로드의 각 단계에서 스크립트로 실행할 수 있습니다.예를 들어 Laravel은composer 스크립트를 사용하여 .env 파일을 만들고 응용 프로그램 키를 만들며 패키지를 실행합니다.

작곡가 각본 플랫폼 요구 사항


라이브러리/패키지 코드는 최신 PHP 버전만 지원하거나 특정 PHP 확장에 따라 달라질 수 있습니다.이 상황을 Composer에 알려 요구에 부합되지 않는 시스템에서 패키지를 다운로드하는 것을 방지할 수 있습니다.예:
"require": {
    "php": "^7.1.3",
    "ext-mbstring": "*",
    "ext-openssl": "*",
    ...
},
이것을 composer.json에 추가합니다. PHP가 v7.1.3보다 낮거나 mbstring과openssl 확장이 없는 시스템이 패키지를 다운로드하려고 시도할 때composer에서 오류를 발생합니다.

자동 검색 라이브러리 / 패키지 유지 관리



중요한 업데이트가 있을 때마다 패키지 관리자는 각 버전의 패키지에 대해 다른 디렉터리를 유지하거나 GitHub를 통해 새 버전을 발표한다.Composer는 VCS 태그와 지점의 우아한 통합으로 제출과 전송에 태그를 추가하기만 하면 됩니다.나머지는 다 처리했습니다.
Composer가 강력히 추천 하면 패키지 관리자는 실제 개발에 전념할 수 있고 배달을 걱정할 필요가 없습니다.
비범했어나는 더 이상 불평하지 않겠다. 나는 가입하려고 한다.다음은요?

작곡가의 너트와 볼트


이제 우리는 작곡가가 무엇인지, 왜인지 알게 되었다.'어떻게'부분으로 넘어가겠습니다.

의미 버전 제어 설치


composer 문서의 설치 설명은 매우 명확합니다. 제 가장 좋은 작업은 이라고 생각합니다.

소모


Laravel 구축 프로젝트를 사용하려면 composer를 사용하여 설치해야 합니다.link you there 전통적인 방식을 걷고 싶지만 격려하지 않는다.
Laravel 자체는 PHPUNit, Monolog 등 유용한 소스 개발 패키지를 많이 사용합니다. 이러한 의존 관계도composer가 관리합니다.잠재적인 문제를 피하기 위해 버전 관리를 알아야 합니다.

Fun Fact - Composer installs dependencies in the vendor directory by default but it also supports custom installers for various package types that can install dependecicies in other directories.


어떤 사람 버전 관리


composer가 composer.json 파일에 지정된 버전 제약에 따라 라이브러리를 다운로드하는 방법을 이해하는 데 도움이 될 것입니다.나는 네가 적어도 한 번 Carbon 이 문장을 읽을 것을 건의한다.

Did you know? - You can require a package by its version, branch or
even by a specific commit SHA (not recommended).


개인적으로, 내 건의는 의미 버전 제어를 사용하는 패키지는 삽입 기호 버전 범위 (^), 다른 패키지는 어댑터 버전 범위 (.*) 를 사용하는 것이다. 왜냐하면 쉽게 파악할 수 있기 때문이다.

작곡가를 이해하다.파일 잠금

composer.json 명령을 사용하거나 터미널에서 직접 패키지가 필요할 때 자동으로 관리됩니다create-project.composer.lock 네가 주의해야 할 것이다.
우선, 당신original documentation은 당신의 작곡가입니다.팀 구성원이 공공 프로젝트를 처리할 때 같은 의존 항목 복사본을 사용할 수 있도록 파일을 잠그십시오.이것은 어떻게 발생한 것입니까?
Composer는 언제 실행되든지composer install, 이 Composer가 있는지 확인합니다.파일을 잠급니다.존재하면 정확한 버전 번호와 사용할 SHA를 포함하는 자물쇠 파일에 따라 모든 의존 항목을 설치합니다.잠금 파일이 없으면 Composer는 파일을 읽고 의존 항목을 설치하고 composer.json 파일을 만들 수 있습니다.다음에 서버나 다른 컴퓨터에서 install 명령을 실행할 때lock 파일을 사용하여 똑같은 복사본을 제공합니다.
한편, composer.lock 명령은 composer update 파일을 직접 보고 버전 제약에 따라 의존항의 새 버전을 설치하고 잠금 파일을 업데이트합니다.

작곡가의 느림


should commit
나는composer의 느린 설치와 업데이트를 겪었다.배경에서 무슨 일이 일어났는지 나는 계속 화면을 쳐다보며 그것이 완성되기를 기다린 후에야 다음 단계를 취할 수 있다.
같은 문제에 직면하면, 백그라운드 처리에 대한 더 많은 정보를 얻기 위해 composer.json--profile 심지어는 -vv 부가composer 명령을 사용하는 것을 권장합니다.예:
composer install -vv --profile
출력에서 특정한 문제를 찾을 수 없으면 병행 다운로드를 시도할 수 있습니다.

소프트웨어 패키지 개발


첫 번째 패키지/라이브러리를 구축하기 시작하면 개발을 편안하게 할 수 있는 유용한 힌트가 있습니다.
대부분의 경우 개발 과정에서 실제 프로젝트에 대한 테스트 패키지/라이브러리가 필요합니다. 이를 위해 관리자는 패키지를 실제 프로젝트에 보존하여 불필요한 여러 차례 발표를 피할 수 있습니다.
작곡가this package는 자신을 이 함정에서 구할 수 있다.이것은 기호 링크나 거울 항목의 환매 프로토콜을 연결합니다. 코드 라이브러리를 분리하여 쉽게 관리하고 전환할 수 있습니다.
Laravel의 슈퍼 장인 Caleb Porzio even 은 명령 하나만 있으면 이 기능을 사용할 수 있습니다.

Quick tip - If your package contains a command line script which you would like to pass along to the users, consider using vendor binaries. PHPUnit uses it to quickly let you fire vendor/bin/phpunit.


경로 저장소 분기 별칭


일단 가방/라이브러리가 여러 프로젝트에서 사용되면, 개발자의 생활을 더욱 쉽게 하기 위해 지점 별명을 추가하는 것을 고려해야 합니다.added a bash alias 그 배후의 원인을 잘 설명하고 어떻게 집행할 것인지를 지정했다.

Advanced level developers - Composer allows you to alter or expand it's functionality by using composer-plugins. You can perform actions when your package is loaded and when certain events are fired.


최종 주석


이거 좀 길어요.우리는 관계 관리에 의존한 역사를 간략하게 소개하고 Composer가 무엇인지 이해하며 복원 문제를 토론한 다음에 새로운 개발자와 패키지 관리자에게 Composer와 관련된 유용한 요점과 기교를 소개했다.
이것이 바로 내가 말하고자 하는 것이다.만약 당신이 맨 위에서 여기까지 왔다면, 모든 줄을 읽어 주십시오. 감사합니다.나는 우리의 사고방식이 일치한다고 생각한다.아래 댓글 부분에서 인사하세요.
만약 당신에게 어떤 문제가 있으면 언제든지 평론을 발표해 주십시오. 나는 최선을 다해 당신의 문제를 해결할 것입니다.
만약 당신이 이것이 당신의 온라인 네트워크의 다른 개발자들을 도울 수 있다고 생각한다면, 나는 당신이 그들과 함께 있는 것을 보고 매우 기쁩니다.감사합니다.

좋은 웹페이지 즐겨찾기