목차
Extensions and packages
PEAR 및 PECL
Composer
Composer Usage
总结
개발 도구 composer 리뷰 작성자

리뷰 작성자

Dec 02, 2020 pm 03:07 PM
composer php

다음 튜토리얼 칼럼인 composer에서 작곡가를 리뷰할 수 있습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

리뷰 작성자

Composer는 PHP 커뮤니티에서 권장하는 종속성 관리 도구입니다. Composer는 Node.js의 npm과 마찬가지로 PHP의 경우 현대 PHP 개발에 거의 필요한 기술입니다. 이 기사에서는 Composer의 관련 개념과 사용법을 간략하게 검토합니다.

Extensions and packages

관련 개념은 프레임워크와 라이브러리입니다. 프레임워크와 라이브러리의 차이점은 제가 이전에 쓴 이 글을 확인하세요.

Extensions와 패키지는 매우 유사한 개념입니다. PHP 세계에서는 일반적으로 두 가지를 다음과 같이 이해하고 구별할 수 있습니다. 확장과 모듈은 동일하며 C 언어로 작성된 함수 모음입니다. 패키지와 라이브러리는 동일하며 주로 C 언어로 작성됩니다. PHP 확장으로 구현된 기능은 동적 링크 라이브러리(dll 등) 형식으로 로드되고 패키지는 require/include를 통해 로드됩니다. 대부분의 경우 두 가지를 혼합해도 이해하는 데 어려움이 발생하지 않습니다.

공통 확장에는 GD, ZIP, XML, MySQLi, OPCache 등이 포함됩니다. 일반 패키지에는 PHPMailer, PHPOffice, HTMLPurifier 등이 포함됩니다.

PEAR 및 PECL

Composer가 인기를 끌기 전에는 PEAR와 PECL이 PHP 개발자에게 더 잘 알려진 두 가지 도구(커뮤니티)였습니다. PEAR는 PHP Extension and Application Repository의 약어이고 공식 웹사이트는 http://pear.php.net입니다. PECL은 PHP Extension Community Library의 약어이며 공식 웹사이트는 http://pecl입니다.

둘 사이의 차이점은 확장과 패키지로 구분할 수 있습니다. PECL 호스팅 확장, 소스 코드는 대부분 APC, AMPQ 등과 같은 C 파일이며, 기능은 PHP와 같은 PHP로 구현됩니다. CodeSniffer, HTTP 요청 등은 PEAR 명령에 해당하고 PECL은 pecl 명령에 해당합니다. 이 두 명령을 사용하여 확장 및 패키지를 설치하고 관리할 수 있습니다(pear의 build/pickle 하위 명령은 PECL에서 확장을 컴파일할 수도 있습니다). 두 사람은 서로를 보완하며, 공식 홈페이지에는 자매 관계라고 적혀 있다.

PECL은 공식 확장팩의 추가 버전이며 여전히 활발하게 활동 중입니다. 일부 우수한 확장팩은 공식 확장팩이 될 가능성이 있습니다. Master Han Tianfeng의 스울 확장은 PECL에서도 개최되며 중국에서도 매우 잘 알려져 있습니다. 이에 비해 PEAR는 과거의 일입니다. PEAR2와 Pyrus(차세대 PEAR 패키지 설치 도구, PHP5.3+를 기반으로 구축됨, 공식 웹사이트 http://pear2.php.net)의 등장으로 PEAR를 저장할 수 없었습니다. PEAR의 쇠퇴는 이 글의 주인공인 Composer의 부상을 동반합니다.

PEAR의 포지셔닝은 "재사용 가능한 PHP 구성 요소를 제공"하고 개발자에게 중앙 집중식으로 기능 패키지를 제공하는 것입니다. 중앙 집중식 릴리스 방식은 코드의 품질을 보장하지만 유지 관리의 불편함도 가져옵니다. 검토를 통과한 패키지만 릴리스할 수 있으며 패키지 노후화 현상이 심각합니다. PEAR에 의해 설치되는 패키지는 전역 패키지이며 개별 프로젝트에 대해 종속 패키지를 설치할 수 없습니다. 권한이 없는 사용자는 종속 패키지를 직접 설치할 수 없습니다. 다른 단점으로는 빈약한 종속성 관리가 있습니다. Github의 인기와 Composer의 등장으로 패키지 관리는 Composer 시대로 접어들었습니다. PEAR는 역사적 사명을 완수했으며 안심하고 갈 수 있습니다.

Composer

엄밀히 말하면 Composer는 패키지 관리자가 아닌 종속성 관리 도구로 포지셔닝됩니다. Composer 중국어 웹사이트에서는 Composer의 작업을 다음과 같이 소개합니다.

Composer가 문제를 다음과 같이 해결해 드립니다.

a) 여러 라이브러리에 의존하는 프로젝트가 있습니다.

b) 이러한 라이브러리 중 일부는 다른 라이브러리에 의존합니다.

c) 당신은 당신이 의지하는 것을 선언합니다.

d) Composer는 설치해야 할 패키지 버전을 파악하고 설치합니다(프로젝트에 다운로드).

Composer는 PEAR가 할 수 있는 모든 것을 할 수 있으며(PECL 확장 설치 포함) 일부는 더 잘 할 수 있습니다. Composer는 기본적으로 프로젝트 디렉터리에 패키지를 설치하며 일반 사용자는 정상적으로 사용할 수 있습니다. (Composer는 루트로 작곡가 명령을 실행하지 말 것을 공식적으로 권장합니다.) 모범 사례를 따르는 것이 좋습니다(예: 유명한 PSR 사양, 자세한 내용은 다음을 참조하세요). PHP-FIG 공식 웹사이트(https://www.php-fig.org)는 PHP 커뮤니티에서 코딩 스타일의 표준화를 크게 촉진합니다. Composer는 누구나 코드 패키지를 검토할 필요가 없는 분산형 플랫폼입니다. 패키지를 게시할 때 패키지의 품질은 사용자 투표에 의해 결정됩니다. PEAR의 후속 제품인 Composer의 성능은 커뮤니티의 테스트를 통과했으며 종속성 관리를 위한 사실상의 표준 도구가 되었습니다.

Composer는 이제 거대한 생태계를 형성했으며, 양적으로 보면 Composer의 패키지가 PEAR를 훨씬 능가합니다. 누구나 검토 없이 자유롭게 패키지를 게시할 수 있으므로 Composer 생태계의 패키지에는 고르지 않은 코드 품질, 다양한 코드 스타일, 백도어 취약성과 같은 숨겨진 우려 사항이 있을 수 있습니다. 또한 Composer의 종속성 관리는 프로젝트를 기반으로 하며 동일한 패키지가 컴퓨터에 여러 번 설치될 수 있습니다. 그러나 전체적으로 Composer는 PHP 개발 생태계를 크게 변화시키고 코드 교환 및 커뮤니티 개발을 촉진했습니다.

Composer Usage

Composer는 프로젝트의 종속성을 관리하도록 설계되었으며, 프로젝트에 있는 작곡가.json 파일이 작업의 기반이 됩니다. 파일에서 가장 중요한 부분은 require 섹션으로, Composer에게 설치할 패키지와 해당 버전을 알려줍니다. 예:

{
    "name": "tlanyan/foo",
    "version": "1.0.0",
    ....
    "require": {
        "php": ">=5.4.0",
        "yiisoft/yii2": ">=2.0.6",
        "yiisoft/yii2-swiftmailer": "*",
        "yiisoft/yii2-redis": ">=2.0.0",
        "smarty/smarty": "< =3.1.25",
        "yiisoft/yii2-smarty": ">=2.0.0",
        "phpoffice/phpexcel": ">=1.8.0",
        "tecnickcom/tcpdf": "~6.2.0"
    },
    ....
}
로그인 후 복사

然后运行composer install命令,Composer会自动分析依赖,安装最合适的包到vendor目录下。加-v(-vv, -vvv)选项会打印命令执行过程中的详细信息。安装完毕后,vendor目录下会生成autoload.php文件。在项目的入口文件中包含此文件: require __DIR__ . "/vendor/autoload.php";,接下来便可在项目的任何地方引用依赖包中的接口和类。

install命令,Composer提供了许多其他命令管理依赖。常用的命令场景包括:查找依赖、引入依赖、安装依赖、更新依赖。分别对应的命令是:

  1. composer search: 根据关键字查找依赖包,例如查找本人发布的包:composer search tlanyan。该命令等同于上https://packagist.org进行包查找;
  2. composer require: 引入依赖,声明项目或者全局(global,用户名全局,非系统全局)依赖某个包, 例如声明需要swiftmailer包: composer require [global] "swiftmailer/swiftmailer:dev-master";该命令更新composer.json文件,并默认立即安装依赖(--no-update选项可阻止默认安装);效果等同于编辑composer.json文件,然后执行install命令;
  3. composer install:安装composer.json声明的依赖包,最终安装的依赖包版本可能取决于有无composer.lock文件;
  4. composer update: 更新依赖到最新版本,相当于删除composer.lock文件后执行composer install

以上四条命令涵盖使用Composer的大部分场景。以下是几个常用的辅助命令,与依赖分析相关:

  1. composer info: 查看安装的依赖包信息,与composer show等价;
  2. composer dumpautoload: 加-o选项可导出优化的加载器;
  3. composer why(-not): 查看(不)安装某个包的原因。

总结

从拷贝第三方代码到项目中(1994),到PEAR安装依赖包(1999),再到Composer兴起(2012),PHP社区经历了将近20年的探索。PHP这门古老的语言,也在不断的发展更新,在web领域一直发光发热。Composer作为目前PHP包依赖管理的最佳工具,值得每一位PHP开发人员掌握。

위 내용은 리뷰 작성자의 상세 내용입니다. 자세한 내용은 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 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

LARAVEL 소개 예 LARAVEL 소개 예 Apr 18, 2025 pm 12:45 PM

Laravel은 웹 응용 프로그램을 쉽게 구축하기위한 PHP 프레임 워크입니다. 설치 : Composer를 사용하여 전 세계적으로 Laravel CLI를 설치하고 프로젝트 디렉토리에서 응용 프로그램을 작성하는 등 다양한 기능을 제공합니다. 라우팅 : Routes/Web.php에서 URL과 핸들러 간의 관계를 정의하십시오. 보기 : 리소스/뷰에서보기를 작성하여 응용 프로그램의 인터페이스를 렌더링합니다. 데이터베이스 통합 : MySQL과 같은 데이터베이스와 상자 외 통합을 제공하고 마이그레이션을 사용하여 테이블을 작성하고 수정합니다. 모델 및 컨트롤러 : 모델은 데이터베이스 엔티티를 나타내고 컨트롤러는 HTTP 요청을 처리합니다.

CRAFT CMS의 캐싱 문제 해결 : Wiejeben/Craft-Laravel-Mix 플러그인 사용 CRAFT CMS의 캐싱 문제 해결 : Wiejeben/Craft-Laravel-Mix 플러그인 사용 Apr 18, 2025 am 09:24 AM

CRAFTCMS를 사용하여 웹 사이트를 개발할 때 특히 CSS 및 JavaScript 파일을 자주 업데이트 할 때 자주 리소스 파일 캐싱 문제가 발생하면 이전 버전의 파일이 여전히 브라우저에서 캐싱 될 수 있으므로 사용자는 최신 변경 사항을 볼 수 없습니다. 이 문제는 사용자 경험에 영향을 줄뿐만 아니라 개발 및 디버깅의 어려움을 증가시킵니다. 최근에 나는 프로젝트에서 비슷한 문제를 겪었고, 약간의 탐색 후 플러그인 Wiejeben/Craft-Laravel-Mix를 발견하여 캐싱 문제를 완벽하게 해결했습니다.

교리 단체 직렬화 효율성 향상 : SIDUS/교리 서리 라이저-펀드의 적용 교리 단체 직렬화 효율성 향상 : SIDUS/교리 서리 라이저-펀드의 적용 Apr 18, 2025 am 11:42 AM

많은 교리 단체와 함께 프로젝트를 수행 할 때 어려운 문제가있었습니다. 엔티티가 직렬화되고 사막화 될 때마다 성능이 매우 비효율적 이어져 시스템 응답 시간이 크게 증가합니다. 여러 최적화 방법을 시도했지만 잘 작동하지 않습니다. 다행스럽게도 Sidus/Doctrine-Serializer-Bundle을 사용 하여이 문제를 성공적으로 해결하여 프로젝트의 성능을 크게 향상 시켰습니다.

PHP의 지속적인 사용 : 지구력의 이유 PHP의 지속적인 사용 : 지구력의 이유 Apr 19, 2025 am 12:23 AM

여전히 인기있는 것은 사용 편의성, 유연성 및 강력한 생태계입니다. 1) 사용 편의성과 간단한 구문은 초보자에게 첫 번째 선택입니다. 2) 웹 개발, HTTP 요청 및 데이터베이스와의 우수한 상호 작용과 밀접하게 통합되었습니다. 3) 거대한 생태계는 풍부한 도구와 라이브러리를 제공합니다. 4) 활성 커뮤니티와 오픈 소스 자연은 새로운 요구와 기술 동향에 맞게 조정됩니다.

작곡가를 사용하여 Laravel 애플리케이션의 보안을 향상시키는 방법 : Wiebenieuwenhuis/Laravel-2FA 라이브러리의 응용 프로그램 작곡가를 사용하여 Laravel 애플리케이션의 보안을 향상시키는 방법 : Wiebenieuwenhuis/Laravel-2FA 라이브러리의 응용 프로그램 Apr 18, 2025 am 11:36 AM

Laravel 애플리케이션을 개발할 때는 일반이지만 어려운 문제가 발생했습니다. 사용자 계정의 보안을 향상시키는 방법. 사이버 공격의 복잡성이 증가함에 따라 단일 암호 보호만으로는 사용자 데이터의 보안을 보장하기에 충분하지 않습니다. 몇 가지 방법을 시도했지만 결과는 만족스럽지 않았습니다. 마지막으로, 작곡가를 통해 Wiebenieuwenhuis/Laravel-2FA 라이브러리를 설치하고 응용 프로그램에 2 단계 인증 (2FA)을 성공적으로 추가하여 보안을 크게 향상 시켰습니다.

작곡가를 사용하여 Fecmall 고급 프로젝트 템플릿을 신속하게 구축하는 방법 작곡가를 사용하여 Fecmall 고급 프로젝트 템플릿을 신속하게 구축하는 방법 Apr 18, 2025 am 11:45 AM

전자 상거래 플랫폼을 개발할 때는 올바른 프레임 워크와 도구를 선택하는 것이 중요합니다. 최근에 기능이 풍부한 전자 상거래 웹 사이트를 구축하려고 할 때 어려운 문제가 발생했습니다. 확장 가능하고 완벽하게 기능적인 전자 상거래 플랫폼을 신속하게 구축하는 방법. 여러 솔루션을 시도하고 Fecmall의 고급 프로젝트 템플릿 (Fecmall/FBBCBase-App-Advanced)을 선택했습니다. 작곡가를 사용하면이 프로세스가 매우 간단하고 효율적입니다. 작곡가는 다음 주소를 통해 배울 수 있습니다. 학습 주소

작곡가를 사용하여 JSON 스키마 검증 문제를 해결하는 방법 작곡가를 사용하여 JSON 스키마 검증 문제를 해결하는 방법 Apr 18, 2025 am 11:51 AM

Symfony 기반 응용 프로그램을 개발할 때 까다로운 문제가 있습니다. JSON 데이터 형식을 효과적으로 검증하는 방법. 처음에는 수동 검증 코드를 사용해 보았지만 복잡 할뿐만 아니라 오류가 발생했습니다. 약간의 탐사 후, 나는 Ptyhard/Json-Schema-Bundle이라는 작곡가 패키지를 발견하여 프로젝트에 편의성과 효율성을 높였습니다.

Laravel의 버전 번호를 보는 방법은 무엇입니까? Laravel의 버전 번호를 보는 방법 Laravel의 버전 번호를 보는 방법은 무엇입니까? Laravel의 버전 번호를 보는 방법 Apr 18, 2025 pm 01:00 PM

Laravel 프레임 워크에는 개발자의 다양한 요구를 충족시키기 위해 버전 번호를 쉽게 볼 수있는 내장 방법이 있습니다. 이 기사는 Composer Command Line 도구 사용, .env 파일에 액세스하거나 PHP 코드를 통해 버전 정보를 얻는 것을 포함하여 이러한 방법을 탐색합니다. 이러한 방법은 Laravel 애플리케이션의 버전 관리를 유지 관리하고 관리하는 데 필수적입니다.

See all articles