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

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

藏色散人
藏色散人앞으로
2020-08-07 13:23:462852검색

다음 튜토리얼 칼럼인 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보다 작은 버전은

  • 버전 번호 앞에 >, >=, !=, 2346418db6d11a49858d1ba81e573c8e/acab04e509e5b64e7e2bc0d60ab53414的目录结构来组织。

    * vendor/autoload.php

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

    =====

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

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

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