>백엔드 개발 >PHP 튜토리얼 >PHP 개발자가 알아야 할 5가지 작성기 팁_php 팁

PHP 개발자가 알아야 할 5가지 작성기 팁_php 팁

PHP中文网
PHP中文网원래의
2016-05-16 19:58:591469검색

이 글에서는 주로 PHP 개발자가 알아야 할 5가지 Composer 팁을 소개합니다. 도움이 필요한 친구들이 참고할 수 있습니다.

Composer는 차세대 PHP 종속성 관리 도구입니다. 소개 및 기본 사용법에 대해서는 "Composer PHP 종속성 관리의 새로운 시대" 기사를 읽어보세요. 이 기사에서는 PHP 개발의 편의성을 높이기 위해 Composer 사용에 대한 5가지 팁을 소개합니다.

1. 단일 라이브러리만 업데이트합니다.

특정 라이브러리만 업데이트하고 해당 라이브러리의 모든 종속성을 업데이트하고 싶지는 않습니다.

composer update foo/bar

게다가 이 트릭을 사용하면 "경고 메시지 문제"를 해결할 수도 있습니다. 다음과 같은 경고 메시지를 본 적이 있을 것입니다.

Warning: The lock file is not up to date with the latest changes in composer.json, you may be getting outdated dependencies, run update to update them.


아, 무엇이 잘못되었나요? 당황하지 말 것! composer.json을 편집하면 다음과 같은 메시지가 표시됩니다. 예를 들어, 라이브러리 설명, 작성자, 추가 매개변수 또는 공백과 같은 세부사항을 추가하거나 업데이트하면 파일의 md5sum이 변경됩니다. 그러면 Composer는 해시 값이 composer.lock에 기록된 값과 다르다는 경고를 표시합니다.

그럼 어떻게 해야 할까요? update 명령은 잠금 파일을 업데이트할 수 있지만 일부 설명만 추가하는 경우 라이브러리를 업데이트해서는 안 됩니다. 이 경우 update nothing:

$ composer update nothing
Loading composer repositories with package information 
Updating dependencies 
Nothing to install or update 
Writing lock file 
Generating autoload files

이렇게 하면 Composer가 라이브러리를 업데이트하지 않지만 composer.lock은 업데이트됩니다. nothingupdate 명령의 키워드가 아닙니다. 이 패키지로 인해 nothing 결과가 발생하지 않습니다. foobar을 입력해도 결과는 동일합니다.

사용 중인 Composer 버전이 충분히 새로운 경우 --lock 옵션을 직접 사용할 수 있습니다:

composer update --lock

2. 편집 없음 composer.json의 경우

라이브러리를 설치할 때 라이브러리를 설치할 때마다 composer.json을 수정하는 것이 너무 번거로울 수 있으므로 require 명령을 직접 사용할 수 있습니다.

composer require "foo/bar:1.0.0"

이 방법을 사용하면 새 프로젝트를 빠르게 열 수도 있습니다. init 명령에는 자동으로 --require를 쓸 수 있는 composer.json 옵션이 있습니다. (질문에 답할 필요가 없도록 -n을 사용한다는 점에 유의하세요.)

$ composer init --require=foo/bar:1.0.0 -n
$ cat composer.json
{
  "require": {
    "foo/bar": "1.0.0"
  }
}

3.

유도하기 쉽습니다. 초기화 중에 create-project 명령을 사용해 보셨나요?

composer create-project doctrine/orm path 2.2.0

이렇게 하면 저장소가 자동으로 복제되고 지정된 버전이 체크아웃됩니다. 이 명령은 원본 URI를 검색할 필요가 없으므로 라이브러리를 복제할 때 사용하기 매우 편리합니다.

4. 캐싱을 고려하세요. dist패키지 우선순위

작년의 Composer는 다운로드한 dist패키지를 자동으로 보관합니다. 기본적으로 dist 패키지는 "symfony/symfony": "v2.1.4"과 같은 태그가 지정된 버전, 와일드카드나 버전 범위, "2.1.*" 또는 ">=2.2,100db76e9481734413156650876bf3be=2.2,<2.3-dev"(stableminimum-stability으로 사용하는 경우)에 사용됩니다.

dist 패키지는 dev-master과 같은 브랜치에도 사용할 수 있습니다. Github에서는 특정 git 참조의 압축 패키지를 다운로드할 수 있습니다. 소스 코드를 복제하는 대신 타르볼을 강제로 사용하려면 installupdate--prefer-dist 옵션을 사용할 수 있습니다.

다음은 예입니다(실행 시간을 표시하기 위해 --profile 옵션을 사용했습니다).

$ composer init --require="twig/twig:1.*" -n --profile
Memory usage: 3.94MB (peak: 4.08MB), time: 0s

$ composer install --profile
Loading composer repositories with package information 
Installing dependencies 
 - Installing twig/twig (v1.12.2)
  Downloading: 100%

Writing lock file 
Generating autoload files 
Memory usage: 10.13MB (peak: 12.65MB), time: 4.71s

$ rm -rf vendor

$ composer install --profile
Loading composer repositories with package information 
Installing dependencies from lock file 
 - Installing twig/twig (v1.12.2)
  Loading from cache

Generating autoload files 
Memory usage: 4.96MB (peak: 5.57MB), time: 0.45s

여기 twig/twig:1.12.2 압축된 패키지는 ~/.composer/cache/files/twig/twig/1.12.2.0-v1.12.2.zip에 저장됩니다. 패키지를 다시 설치할 때 직접 사용하십시오.

5. 수정하려면 소스코드부터 먼저

라이브러리 수정이 필요한 경우에는 패키지를 다운로드하는 것보다 소스코드를 복제하는 것이 더 편리합니다. --prefer-source을 사용하여 복제된 소스 코드를 강제로 선택할 수 있습니다.

composer update symfony/yaml --prefer-source

다음으로 파일을 수정할 수 있습니다.

composer status -v 
You have changes in the following dependencies: 
/path/to/app/vendor/symfony/yaml/Symfony/Component/Yaml:
  M Dumper.php

때 수정된 라이브러리를 업데이트하려고 하면 Composer가 알림을 표시하고 수정을 취소할지 여부를 묻습니다.

$ composer update
Loading composer repositories with package information 
Updating dependencies 
 - Updating symfony/symfony v2.2.0 (v2.2.0- => v2.2.0)
  The package has modified files:
  M Dumper.php
  Discard changes [y,n,v,s,?]?

프로덕션 환경 준비

마지막으로, 프로덕션 환경에 코드를 배포할 때 자동 로딩을 최적화하는 것을 잊지 마세요.

composer dump-autoload --optimize

패키지를 설치할 때 이렇게 할 수 있습니다. --optimize-autoloader도 비슷하게 사용하세요. 이 옵션이 없으면 성능이 20~25% 손실될 수 있습니다.

도움이 필요하거나 특정 명령의 세부 사항을 알고 싶다면 공식 문서나 중국어 문서를 읽거나 JoliCode에서 만든 대화형 치트 시트를 확인하세요.



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