>개발 도구 >composer >Composer의 물결표 기호 ~와 전원 기호의 차이점은 무엇입니까 ^

Composer의 물결표 기호 ~와 전원 기호의 차이점은 무엇입니까 ^

藏色散人
藏色散人앞으로
2020-08-12 13:16:554114검색

다음 composer 튜토리얼 칼럼에서는 Composer의 물결 기호 ~와 힘 기호 ^의 차이점을 소개하겠습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

Composer의 물결표 기호 ~와 전원 기호의 차이점은 무엇입니까 ^

버전 번호를 무작위로 쓰는 사람들을 너무 많이 봤습니다(사실 이전보다 지금이 훨씬 나아졌습니다). 1.9.0의 다음 버전은 2.0.0이어야 하고, 2.9.0의 다음 버전은 반드시 있어야 합니다. be 3.0.0... ... 이전에는 버전 번호를 명명하는 기준이 없었고, 다들 기분에 따라 썼기 때문입니다. 이후 시맨틱 버전화가 추진되어 버전번호 명명 상황이 개선됐으나 여전히 3분할 버전번호가 무엇을 의미하는지 모르는 사람이 많다(이러한 사양을 각종 훈련소에서 가르치면 죽을까?). ..).

간단히 말하면(그냥 옮기는 것인데 위에서 언급한 웹사이트를 보면 더 명확해집니다) 세 부분으로 구성된 버전 번호의 각 부분의 의미는 다음과 같습니다.

대형 버전.부 버전.패치 버전

하자 가장 확실한 첫 번째 패치 버전에 대해 이야기하십시오. 소프트웨어나 라이브러리에 이전에 일부 버그가 수정된 경우 패치 버전은 +1이어야 합니다.

마이너 버전 번호에 대해 이야기해 보겠습니다. 자동으로 물건을 집어내는 RPG 게임 같은 새로운 기능을 추가하거나 코드 베이스에 새로운 메소드를 추가하면 사용자가 코드 베이스를 업그레이드해도 호환성 문제(BC)가 발생하지 않으므로 작은 버전 No.1 .

마지막으로, 소프트웨어가 완전히 리팩터링되었거나 코드 베이스가 완전히 리팩터링되어 새 라이브러리를 업그레이드하는 사용자가 필연적으로 호환성 문제를 일으키는 경우 주요 버전 번호는 +1입니다.

물론, 버그 수정과 기능 추가가 동시에 되는 경우도 있을 것입니다. 간단히 말해서, 이전 숫자에 +1이 필요한 경우, 다음 숫자는 어떠한 경우에도 0으로 지워져야 합니다.

사실 최종 사용자를 위한 소프트웨어에 너무 엄격할 필요는 없습니다. 최종 사용자는 버전에 크게 신경 쓰지 않기 때문입니다(큰 버전 번호 제외... 그래서 크롬 스타일의 버전 번호가 나타났습니다. 그리고 Firefox도 그 뒤를 따랐습니다...) 그러나 라이브러리 파일 작성자의 경우 버전 번호를 준수하는 것이 좋습니다. 왜냐하면 설정한 버전 번호는 라이브러리 호출자에게 매우 중요한 정보를 제공하고 버전 번호를 사용하여 결정해야 하기 때문입니다. 호환성 문제를 방지할지 여부.

고전적인 예를 들자면 Symfony 2/3/4가 사용 면에서는 유사하지만 이 세 가지 버전 간에 인터페이스 불일치가 있기 때문에 더 큰 버전 번호는 +1이 되어야 합니다. 라이브러리 파일에 이전 버전과 호환되지 않는 인터페이스 변경 사항이 있는 경우, 하나만 있더라도 주 버전 번호에 +1해야 합니다.

그리고 Symfony 3.0.x를 사용하여 일부 프로젝트를 개발한다면 직접 3.4.x로 업그레이드하더라도 이론적으로는 전혀 문제가 없습니다.

세그먼트 버전 번호에 대해 이야기한 후, Composer.json에서 버전 번호를 지정하는 ^ 기호와 ~ 기호는 무엇을 의미합니까? PHPer를 괴롭히는 문제에 대해 이야기해 보겠습니다. 차이점은 무엇입니까?

이 블로그를 쓰기 전, 실제로 바이두에서 검색을 하다가 관련 글이 많은지, 이 글을 쓸 만한 가치가 있는지 알고 싶었습니다. 검색 결과를 보면 누군가 실제로 요약한 것으로 나와 있습니다. 대부분의 예는 하나뿐입니다.

~1.2.3은 1.2.3 <= 버전 번호< 1.3.0

^1.2.3은 1.2.3 <= 버전 번호< 2.0.0

을 나타냅니다. 위에 내용을 옮기기 위해 한 가지 더 추가하겠습니다. ~는 버전 번호가 마지막 문단만 변경할 수 있다는 뜻입니다(~x.y이면 끝은 y, ~x.y.z이면 끝은 z). . 예를 들어,

~1.2는 > =1.2.0; <2.0.0

그리고 ^ 기호는 위에서 언급한 의미적 버전을 최대한 사용한다는 의미입니다. 가능하지만 호환성 문제가 발생하지 않도록 하기 위해, 즉, 메이저 버전 번호 외에 마이너 버전 번호와 패치 버전 번호도 변경될 수 있습니다.

그런데 아직까지 아무도 언급하지 않은 매우 중요한 사항이 있는 것 같습니다. 의미적 버전 관리에서 0으로 시작하는 버전 번호는 상당히 특별하며, ^은 의미적 버전 관리 규칙을 엄격하게 준수하므로 다음과 같은 상황이 발생합니다( 이전 작곡가 버전에는 이러한 처리가 없었으며 나중에 수정되었습니다.):

^0.3.0은 >=0.3.0;과 같습니다. <0.4.0

eh? <1.0.0이어야 하지 않나요?

그 이유는 시맨틱 버전 관리의 규칙에 따르면 메이저 버전 번호가 0으로 시작하면 불안정한 버전(불안정)이라는 의미이기 때문입니다. 불안정한 상태라면 마이너 버전 번호는 허용되지 않습니다. 이전 버전과 호환 가능! 따라서 0으로 시작하는 라이브러리를 지정하려면 다음 사항에 주의해야 합니다.

~0.1 ~0.1은 <=0.1.0;과 같기 때문에 이 방법은 매우 위험합니다. 이전 버전과 호환되지 않습니다. 이 경우 더 안전한 작성 방법은

^0.1(>=0.1.0; <0.2.0과 동일)

입니다.

위 내용은 Composer의 물결표 기호 ~와 전원 기호의 차이점은 무엇입니까 ^의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 chrisyue.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제