> 개발 도구 > composer > Composer를 사용하여 종속성을 관리하는 방법을 가르칩니다.

Composer를 사용하여 종속성을 관리하는 방법을 가르칩니다.

藏色散人
풀어 주다: 2020-08-07 13:23:46
앞으로
2873명이 탐색했습니다.

다음 튜토리얼 칼럼인 composer에서는 Composer를 사용하여 종속성을 관리하는 방법을 소개합니다. 필요한 친구들에게 도움이 되길 바랍니다!

Composer를 사용하여 종속성을 관리하는 방법을 가르칩니다.

composer는 원래 PHP 프레임워크인 Symfony에서 패키지 종속성을 관리하기 위해 설계된 도구였습니다. 간단하고 사용하기 쉽기 때문에 이제는 독립적인 오픈 소스 프로젝트가 되었습니다. 이제 Composer를 사용하여 많은 프레임워크와 라이브러리를 설치하고 관리할 수 있습니다.

사실 PHP에는 오랫동안 이런 패키지 종속성 관리 도구가 있었는데, 바로 PEAR입니다. 그러나 PEAR의 설정은 너무 복잡하고, 개별 프로젝트에 대한 종속성 설정이 어려워 현재 Composer는 대중에게 사랑을 받고 있습니다.

이 소개는 사용자만을 위한 것이므로 패키지 개발자가 알아야 할 부분은 다루지 않습니다.

* 설치

Windows 사용자인 경우 설치 파일을 다운로드하고 설치를 실행하기만 하면 됩니다.

https://getcomposer.org/Composer-Setup.exe
로그인 후 복사

수동으로 설치하려면 공식 웹사이트의 지침을 참조하세요.

http://getcomposer.org/doc/00-intro.md#installation-windows
로그인 후 복사

UNIX Like 시스템 사용자인 경우 다음 명령을 통해 설치할 수 있습니다. (curl을 먼저 설치해야 합니다.)

curl -sS https://getcomposer.org/installer | php
로그인 후 복사

설치 프로그램은 PHP 설정을 확인한 다음 현재 디렉터리에 Composer.phar을 다운로드합니다. 작곡가를 실행하려면

php composer.phar
로그인 후 복사

를 실행하거나 간단히 실행 파일로 변경한 후

>mv composer.phar composer
>chmod +x composer
로그인 후 복사

를 실행한 다음 ./composer를 실행하면 됩니다.

단, 다른 작업 디렉터리에 필요하고 실행 권한에 문제가 없다면 파일을 /usr/local/bin에 직접 복사할 수도 있습니다.

* 종속성 설정

프로젝트에서 작곡가를 사용할 때 먼저 사용할 패키지와 버전을 지정하는 작곡가.json 파일을 생성해야 합니다. 예를 들어, 편지를 보내기 위해 phpmailer를 사용해야 하는 경우 다음과 같이 지정할 수 있습니다:

{
"require": {
"phpmailer/phpmailer": "~5.2.7"
}
}
로그인 후 복사

그런 다음 설치를 실행합니다:

eng-Hsu-Pingteki-MacBook-Air:2-1a fillano$ composer install
Loading composer repositories with package information
Installing dependencies (including require-dev)
  - Installing phpmailer/phpmailer (v5.2.7)
    Downloading: 100%         
Writing lock file
Generating autoload files
Feng-Hsu-Pingteki-MacBook-Air:2-1a fillano$
로그인 후 복사

이것이 설치입니다. 설치된 것을 살펴보세요:

Feng-Hsu-Pingteki-MacBook-Air:2-1a fillano$ ls -l
total 16
-rw-r--r--  1 fillano  staff    66 10 11 18:15 composer.json
-rw-r--r--  1 fillano  staff  2330 10 11 18:16 composer.lock
drwxr-xr-x  5 fillano  staff   170 10 11 18:16 vendor
로그인 후 복사

디렉터리에 있는 파일에 따르면 원래는 작곡가.json 파일만 있었던 것을 알 수 있습니다. 설치 후에는 추가로 작곡가.잠금 파일과 공급업체 디렉터리가 있습니다. 먼저 작곡가.잠금의 내용을 살펴보겠습니다.

Feng-Hsu-Pingteki-MacBook-Air:2-1a fillano$ cat composer.lock
{
    "_readme": [
        "This file locks the dependencies of your project to a known state",
        "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
    ],
    "hash": "065c23f92d5ae579cb91beff67f41196",
    "packages": [
        {
            "name": "phpmailer/phpmailer",
            "version": "v5.2.7",
            "source": {
                "type": "git",
                "url": "https://github.com/PHPMailer/PHPMailer.git",
                "reference": "8717a79565b2c0ed67f851d70e1949febdf3b226"
            },
            "dist": {
                "type": "zip",
                "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/8717a79565b2c0ed67f851d70e1949febdf3b226",
                "reference": "8717a79565b2c0ed67f851d70e1949febdf3b226",
                "shasum": ""
            },
            "require": {
                "php": ">=5.0.0"
            },
            "require-dev": {
                "phpdocumentor/phpdocumentor": "*",
                "phpunit/phpunit": "*"
            },
            "type": "library",
            "autoload": {
                "classmap": [
                    "class.phpmailer.php",
                    "class.pop3.php",
                    "class.smtp.php"
                ]
            },
            "notification-url": "https://packagist.org/downloads/",
            "license": [
                "LGPL-2.1"
            ],
            "authors": [
....下略
로그인 후 복사

방금 설치된 패키지에 대한 정보인 것 같습니다.

vendor 디렉터리에 무엇이 있는지 다시 살펴보세요:

Feng-Hsu-Pingteki-MacBook-Air:2-1a fillano$ tree vendor
vendor
├── autoload.php
├── composer
│   ├── ClassLoader.php
│   ├── autoload_classmap.php
│   ├── autoload_namespaces.php
│   ├── autoload_real.php
│   └── installed.json
└── phpmailer
    └── phpmailer
        ├── LICENSE
        ├── PHPMailerAutoload.php
        ├── README.md
        ├── changelog.md
        ├── class.phpmailer.php
        ├── class.pop3.php
        ├── class.smtp.php
        ├── composer.json
        ├── docs
        │   ├── Callback_function_notes.txt
        │   ├── DomainKeys_notes.txt
        │   ├── Note_for_SMTP_debugging.txt
        │   ├── extending.html
        │   ├── faq.html
        │   ├── generatedocs.sh
        │   └── pop3_article.txt
...下略
로그인 후 복사

phpmailer가 설치된 phpmailer 디렉터리 외에 주로 autoload.php 파일과 Composer 디렉터리가 있는 것 같습니다.

컴포저를 통해 설치된 패키지를 로드하려면 먼저 Vendor/autoload.php 파일을 참조한 후 phpmailer를 사용할 수 있는 것으로 나타났습니다. 테스트할 간단한 프로그램을 작성해 보세요:

<?php
require &#39;vendor/autoload.php&#39;;
$phpmailer = new PHPMailer;
로그인 후 복사

실행 후 오류가 없으면 phpmailer가 정상적으로 로드될 수 있다는 의미입니다... 다음으로 이 파일의 용도를 살펴보겠습니다.

* Composer.json

사용자의 경우 이 파일은 주로 종속성을 유지하는 데 사용됩니다. 파일의 "require" 속성에 객체를 추가하기만 하면 됩니다. 여기서 속성 이름은 패키지 이름이고 값은 버전입니다. 패키지 이름은 두 부분으로 나누어집니다. 첫 번째 부분은 공급업체이고 두 번째 부분은 ""로 구분된 실제 패키지 이름입니다. 버전에는 몇 가지 규칙이 있습니다.

  • 2.7.3과 같이 버전 번호를 직접 지정합니다.

  • 기본 버전 번호를 지정한 후 "*"를 사용하여 2.7.*과 같은 부 버전 번호를 지정합니다. 버전 번호는 2.7.0보다 크거나 같고, 2.8.0보다 작은 버전은

  • 버전 번호 앞에 >, >=, !=, <=, < 등을 사용하여 다음을 나타냅니다. 이러한 비교 연산자는 버전 번호 규칙을 지정하는 데 사용되며 여러 규칙은 ","로 구분됩니다. 버전 번호 앞에 "~"를 사용하면 다음 버전 번호 변경 전의 버전을 나타냅니다. 예를 들어 ~2.7은 버전이 2.7보다 크거나 같고 3.0

  • 버전 번호 뒤에 2.7.*@beta와 같은 다양한 안정성 플래그를 추가할 수도 있음을 의미합니다. 사용할 수 있는 플래그는 dev, alpha, beta, RC, stable

  • 버전을 지정한 후 작곡가 설치를 실행하면 지정된 버전 규칙에 따라 최신 버전의 패키지가 설치됩니다.

  • 사실 작곡가.json 파일이 있는 모든 디렉터리는 패키지의 루트 디렉터리이기도 합니다. 그러나 다른 사람들이 사용할 수 있는 키트로 만들려면 이 논의 범위를 벗어나는 많은 설정을 추가해야 합니다.

* Composer.lock

패키지를 처음 설치한 후 이 파일이 생성되며, 설치된 패키지의 정보를 기록합니다. 이 파일의 실제 기능은 다음과 같습니다. 디렉터리에 이 파일이 있으면 설치 시 업데이트된 버전을 검색하지 않고 이 파일에 기록된 버전에 따라 설치합니다. 이 디자인은 새로운 버전의 제품군이 현재 사용되는 버전과 호환되지 않을 가능성이 높기 때문에 중요합니다. 동일한 버전을 사용하지 않으면 시스템의 안정성을 보장하기 어렵습니다. 예전에는 Pear를 사용하여 패키지를 관리할 때 주의하지 않으면 업그레이드로 인한 비극이 발생할 수 있었습니다. 또한 이 파일을 버전 관리에 추가하면 모든 개발자 디렉토리에도 이 파일이 있으므로 모든 사람이 사용하는 패키지 버전이 일관되게 유지됩니다. 이렇게 하면 개발 중에 다른 패키지 버전을 사용하여 발생하는 문제를 줄일 수 있습니다. 프로그램 호환성 문제.

* 공급업체 디렉토리

所有套件都会放置在这个目录,并且依照/的目录结构来组织。

* vendor/autoload.php
로그인 후 복사

只要引用这个档案,就可以载入套件中所有对外公开的类别。基本上每个套件都会定义自己的autoload规则,在安装时,composer会把这些规则加入,这样透过autoload.php就可以直接使用所有已安装的类别。

=====

从这些地方可以看到,Composer这个套件管理工具,在设计上已经做了很周密的考量,只需要简单指定要使用的套件及版本,一个指令就可以安装完毕,引用一个胆案之后就能使用,这样真的非常方便。所以目前几乎所有的程式库以及Framework,应该都逐渐在套用这个工具了。未来在开发PHP程式,恐怕最基本的工具也就是composer。

위 내용은 Composer를 사용하여 종속성을 관리하는 방법을 가르칩니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:ithome
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿