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

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

Aug 12, 2020 pm 01:16 PM
composer

다음 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Composer의 고급 기능: 별칭, 스크립트 및 충돌 해결 Composer의 고급 기능: 별칭, 스크립트 및 충돌 해결 Jun 03, 2024 pm 12:37 PM

Composer는 다음과 같은 고급 기능을 제공합니다. 1. 별칭: 반복 참조를 위해 편리한 패키지 이름 정의 2. 스크립트: 패키지 설치/업데이트 시 데이터베이스 테이블 생성 또는 리소스 컴파일에 사용되는 사용자 정의 명령 실행 3. 충돌 해결: 우선순위 규칙 사용 , 만족 제약 조건 및 패키지 별칭은 설치 충돌을 방지하기 위해 동일한 종속성 버전에 대한 여러 패키지의 다양한 요구 사항을 해결합니다.

PHP 마이크로서비스 컨테이너화의 민첩한 개발 및 운영 PHP 마이크로서비스 컨테이너화의 민첩한 개발 및 운영 May 08, 2024 pm 02:21 PM

답변: PHP 마이크로서비스는 민첩한 개발을 위해 HelmCharts로 배포되고 격리 및 확장성을 위해 DockerContainer로 컨테이너화됩니다. 자세한 설명: HelmCharts를 사용하여 PHP 마이크로서비스를 자동으로 배포하여 민첩한 개발을 달성하세요. Docker 이미지를 사용하면 마이크로서비스의 신속한 반복 및 버전 제어가 가능합니다. DockerContainer 표준은 마이크로서비스를 격리하고 Kubernetes는 컨테이너의 가용성과 확장성을 관리합니다. Prometheus 및 Grafana를 사용하여 마이크로서비스 성능 및 상태를 모니터링하고 경보 및 자동 복구 메커니즘을 생성하세요.

PHP에서 배열을 객체로 변환하는 일반적인 방법은 무엇입니까? PHP에서 배열을 객체로 변환하는 일반적인 방법은 무엇입니까? Apr 28, 2024 pm 10:54 PM

PHP 배열을 객체로 변환하는 방법: stdClass 클래스 사용, json_decode() 함수 사용, 타사 라이브러리(예: ArrayObject 클래스, Hydrator 라이브러리) 사용

PHP 코드 버전 제어 및 협업 PHP 코드 버전 제어 및 협업 May 07, 2024 am 08:54 AM

PHP 코드 버전 제어: PHP 개발에 일반적으로 사용되는 두 가지 버전 제어 시스템(VCS)이 있습니다. Git: 개발자가 협업 및 오프라인 작업을 용이하게 하기 위해 코드 베이스의 복사본을 로컬에 저장하는 분산 VCS입니다. Subversion: 코드 베이스의 고유한 복사본인 중앙 집중식 VCS가 중앙 서버에 저장되어 더 많은 제어 기능을 제공합니다. VCS는 팀이 변경 사항을 추적하고, 협업하고, 이전 버전으로 롤백하는 데 도움이 됩니다.

PHP 배열 페이지 매김에서 Redis 캐시를 사용하는 방법은 무엇입니까? PHP 배열 페이지 매김에서 Redis 캐시를 사용하는 방법은 무엇입니까? May 01, 2024 am 10:48 AM

Redis 캐시를 사용하면 PHP 배열 페이징 성능을 크게 최적화할 수 있습니다. 이는 다음 단계를 통해 달성할 수 있습니다. Redis 클라이언트를 설치합니다. Redis 서버에 연결합니다. 캐시 데이터를 생성하고 "page:{page_number}" 키를 사용하여 각 데이터 페이지를 Redis 해시에 저장합니다. 캐시에서 데이터를 가져오고 대규모 어레이에서 비용이 많이 드는 작업을 피하세요.

PHP CI/CD를 사용하여 빠르게 반복하는 방법은 무엇입니까? PHP CI/CD를 사용하여 빠르게 반복하는 방법은 무엇입니까? May 08, 2024 pm 10:15 PM

답변: CI/CD 파이프라인 설정, 자동화된 테스트 및 배포 프로세스를 포함하여 빠른 반복을 달성하려면 PHPCI/CD를 사용하십시오. CI/CD 파이프라인 설정: CI/CD 도구를 선택하고, 코드 저장소를 구성하고, 빌드 파이프라인을 정의합니다. 자동화된 테스트: 단위 및 통합 테스트를 작성하고 테스트 프레임워크를 사용하여 테스트를 단순화합니다. 실제 사례: TravisCI 사용: TravisCI를 설치하고, 파이프라인을 정의하고, 파이프라인을 활성화하고, 결과를 봅니다. 지속적인 전달 구현: 배포 도구를 선택하고, 배포 파이프라인을 정의하고, 배포를 자동화합니다. 이점: 개발 효율성을 높이고 오류를 줄이며 납품 시간을 단축합니다.

PHP 단위 테스트 및 지속적 전달 통합 PHP 단위 테스트 및 지속적 전달 통합 May 06, 2024 pm 06:45 PM

요약: PHPUnit 단위 테스트 프레임워크와 CI/CD 파이프라인을 통합하면 PHP 코드 품질을 향상하고 소프트웨어 제공을 가속화할 수 있습니다. PHPUnit을 사용하면 구성 요소 기능을 확인하기 위한 테스트 사례를 생성할 수 있으며 GitLabCI 및 GitHubActions와 같은 CI/CD 도구는 이러한 테스트를 자동으로 실행할 수 있습니다. 예: 테스트 케이스로 인증 컨트롤러의 유효성을 검사하여 로그인 기능이 예상대로 작동하는지 확인합니다.

PHP 웹 서비스 개발 및 API 설계 유지 관리 및 업데이트 PHP 웹 서비스 개발 및 API 설계 유지 관리 및 업데이트 May 06, 2024 pm 02:57 PM

PHP 웹 서비스 및 API를 유지 관리하고 업데이트하려면 다음 방법을 구현해야 합니다. 종속성을 업데이트하여 최신 보안 패치를 보장합니다. 버전 관리를 통해 코드베이스 변경 사항을 추적하고 개발에 협력하세요. 업데이트가 기능에 영향을 주지 않는지 확인하기 위한 자동화된 테스트입니다. 지속적인 통합은 자동화된 프로세스를 통해 코드 검증을 보장합니다. 로깅 및 모니터링은 문제를 식별하고 해결하는 데 도움이 됩니다. 취약점을 방지하려면 항상 보안 패치를 업데이트하세요.

See all articles