Msống đầu

Kể từ bỏ khi xây dựng vào ngày 1 mon 3 năm 2012, Composer đang trlàm việc nên thông dụng rộng thoải mái vị đang đem lại một vật dụng rất quan trọng đến PHP: làm chủ dependency. Composer về cơ bạn dạng là 1 phương pháp để pull tất cả những phần mềm của mặt đồ vật bố nhỏng frameworks CSS, plugin jQuery và các phần mềm khác vào dự án công trình của người sử dụng.

Bạn đang xem: Composer là gì

Tuy nhiên, có thể các bạn đã / sẽ cần sử dụng Composer do ích lợi nhưng nó đem đến nhưng chưa bao giờ từng trở về tò mò xem đúng đắn Composer là gì và nó làm những gì. Vậy thì nghỉ ngơi bài này bản thân đã thuộc tò mò cách Composer chuyển động thế nào.

Composer là gì?

Composer là một trong nguyên lý nhằm thống trị dependency vào PHP. Nó có thể chấp nhận được bạn khai báo các thư viện nhưng mà dự án của công ty bắt buộc cùng nó đã thống trị (cài đặt/cập nhật) bọn chúng cho bạn.

Composer không cần là hình thức làm chủ package nlỗi Yum hoặc Apt. Nó tương quan đến "package" hoặc tlỗi viện, dẫu vậy nó quản lý chúng trên các đại lý từng dự án, thiết lập chúng trong một thư mục (ví dụ: vendor) vào dự án của người tiêu dùng. Theo mang định, nó không setup bất kể thứ gì global. Tuy nhiên, nó hỗ trợ một project "global" nhằm dễ dàng thông qua global commvà.

Ý tưởng này chưa hẳn là mới cùng Composer được truyền cảm xúc khỏe mạnh bởi npm của node với bundler của ruby.

Giả sử:

Quý Khách có một dự án công trình phụ thuộc vào vào một số trong những tlỗi viện.Một số tlỗi viện phụ thuộc vào vào những thư viện khác.

Composer:

Cho phnghiền các bạn knhị báo những tlỗi viện mà bạn phụ thuộc vào vào.Tìm ra phiên bạn dạng làm sao của package nào hoàn toàn có thể / cần phải thiết đặt, cùng thiết đặt chúng (tức là nó thiết lập chúng nó vào dự án của bạn).Dependency management

Có nhì phương pháp để cai quản dependency với Composer. trước hết là bao gồm Composer, một qui định comm& line nhằm thu thập và quản lý những dependency. Thứ nhị là Packagist - kho lưu trữ tổng hòa hợp chủ yếu. Đây là chỗ những package bạn (gồm thể) ao ước áp dụng được tàng trữ.

lúc áp dụng Composer, hoàn toàn có thể bạn sẽ thân quen với cùng 1 tệp tin JSON là composer.json. Cơ bạn dạng thì nó đang trông nỗ lực này:

"name": "laravel/laravel", "description": "The Laravel Framework", "keywords": < "framework", "laravel" >, "license": "MIT", "require": "monolog/monolog": "1.12.0" Các package đòi hỏi của dự án công trình của bạn sẽ được liệt kê vào phần require. Trong ngôi trường hợp này, tôi đã require Monolog, một framework nhằm ghi log. Sử dụng terminal, trong thỏng mục dự án công trình chạy lệnh composer install, nó đã tải tất cả package được định nghĩa vào file composer.json vào tlỗi mục vendor của dự án công trình với làm cho một trong những điều không giống (đã đàm luận bên dưới).

Thỏng mục vendor sẽ được tạo nên cất tất cả những dependency - bao gồm cả chính composer. Hình như, monolog với psr (dependency của monolog) cũng được thêm vào một trong những tệp tin không giống là composer.loông chồng.

Chỉ định phiên bản

Có 6 phương pháp để hướng dẫn và chỉ định phiên bản vào file composer.json:

Các tân oán tử >, , >=, cùng !=. Ví dụ >2.7 Có nghĩa là bất kỳ phiên bạn dạng vào bên trên 2.7, >2.7 tức là bất cứ phiên bạn dạng làm sao trên 2.7 với dưới 3.5, bao gồm cả 3.5.

Xem thêm: Cơ Cấu Vốn ( Capital Structure Là Gì ? Các Chỉ Tiêu Phân Tích Cơ Cấu Nguồn Vốn

2.3.* đang bao gồm tất cả phiên bạn dạng như thế nào lớn hơn bằng 2.3.0 cùng nhỏ tuổi rộng bởi 2.4.0. Nó tương đương với >=2.3.0

2.0.0 - 3.0.0 Tức là bất kì phiên bản vào to hơn bằng 2.0.0 cùng bé dại hơn bởi 3.0.0. Nó tương đương cùng với >=2.0.0

~3.6 có thể chấp nhận được toàn bộ phiên bản to hơn bởi 3.6, nhưng lại không bao hàm từ 4.0 trsống lên. Nó tương đương với >=3.6 .

Toán tử^, theo document của composer thì có vẻ như ngùng ngoằng, dẫu vậy nói đơn giản dễ dàng thì nó được cho phép tất cả phiên bản trọng tâm nhì phiên bạn dạng chính tiếp giáp nhau (ví dụ 1. và 2.). lấy ví dụ như ^1.2.3 sẽ cho phép toàn bộ phiên phiên bản giữa 1.2.3 và 2.0.0, nó tương tự với >=1.2.3 . Tân oán tử ^ được recommend Lúc dùng làm viết code tệp tin composer.json.

dev-master, Lúc chỉ định dev-master các bạn sẽ nhận được phiên bạn dạng mới nhất đang rất được cách tân và phát triển nhưng không được đính thêm số phiên bản.

composer.json cùng composer.lock

Để phân tích và lý giải thì tương đối dài, chúng ta cũng có thể phát âm qua bài này để gọi về compser.json cùng composer.loông xã gồm nhiệm vụ khác biệt vậy làm sao.

TL;DR:

composer.json chỉ liệt kê dependency, không chỉ định cụ thể version package sẽ tiến hành install, composer.loông chồng là chỗ hướng dẫn và chỉ định version như thế nào được install Lúc chạy composer install.composer.json được dùng để làm chạy composer install lần đầu tiên, composer.lochồng được tạo ra kế tiếp, lưu trữ phiên bản đã được thiết lập. Sau Khi đang gồm composer.loông xã, composer đã áp dụng composer.loông xã để xác định phiên phiên bản setup cơ mà không dùng composer.json nữa.Dùng composer.lochồng để đảm bảo an toàn version package của các thành viên vào đội là giống như nhau.Cơ chế cađậy của composer

Composer bao gồm một phép tắc để lưu cabịt những dependency Lúc thiết đặt, vấn đề đó góp giảm thời gian lúc chạy lại câu lệnh install. cũng có thể chúng ta đã có lần gặp warning này của Composer lúc chạy composer install:

Do not run Composer as root/super user! See https://getcomposer.org/root for detailsVấn đề này xảy ra khi bạn chạy composer install cùng với câu lệnh subởi vì. Việc này còn có tương quan cho cơ chế cabít của Composer, vày khi chúng ta chạy với quyền subởi, cabịt của Composer cũng sẽ được lưu với quyền suvì chưng (Có nghĩa là quyền của user root). lúc các bạn chạy lại câu lệnh composer install - không có suvì chưng - tại một project / user khác, composer đang không có quyền nhằm hiểu file cabịt này.

Cơ chế lưu cache của Composer cũng giống như bao hệ thống không giống, khi setup trước tiên nó đang giữ một phiên bạn dạng cache sinh sống trên thiết bị các bạn, cùng khi chúng ta phải dùng lại đúng package kia, verison đó, nó sẽ chất vấn cađậy cùng (nếu có) lấy trường đoản cú cabịt ra chũm bởi bắt buộc cài lại từ đầu.

quý khách rất có thể kiểm tra thư mục cađậy khoác định bên trên trang bị bằng câu lệnh:

suvị composer config --menu --global

*
Một số config cađậy của Composer:

cache-dir: Tlỗi mực gốc lưu trữ tất cả cađậy thực hiện do Composer.cache-files-dir: Nơi lưu giữ các tệp tin package dưới dạng nén zip.cache-repo-dir: Lưu trữ những rất dữ liệu repository cho Composer với các Version Control System (VCS) nhỏng github, bitbucket.cache-vcs-dir: Lưu trữ bản sao VCS để cài đặt hết sức tài liệu repository VCS git/hg và nhằm tăng tốc độ quy trình install.cache-files-ttl: Mặc định là 15552000 (6 tháng). Composer cache toàn bộ package nhưng mà nó tải về. Chúng mang định sẽ ảnh hưởng xóa sau 6 mon ko được sử dụng. Bạn rất có thể kiểm soát và điều chỉnh thông số kỹ thuật này để tùy chỉnh cấu hình thời lượng (tính bởi giây) hoặc loại bỏ hóa hoàn toàn bằng cách đặt thành 0.cache-files-maxsize: Mặc định là 300MiB, đó là giới hạn buổi tối qua nhưng mà cađậy hoàn toàn có thể được áp dụng. Khi vượt trên mức cần thiết chất nhận được, các tệp tin cũ độc nhất (hoặc ít được sử dụng nhất) sẽ ảnh hưởng xóa.Packagist

Packagist là địa điểm lưu trữ package mặc định của Composer. Nó cho phép các bạn tra cứu những package cùng mang đến Composer biết vị trí đem code từ bỏ đâu. quý khách hoàn toàn có thể public package của bản thân mình lên đây một bí quyết đơn giản dễ dàng bằng cách thêm 1 file composer.json vào thỏng mục nơi bắt đầu trên repository (github / bitbucket) của công ty, với ngôn từ nlỗi sau:

"name": "your-vendor-name/package-name", "description": "A short description of what your package does", "require": "php": "^7.2", "another-vendor/package": "1.*" Đây là thông báo buổi tối tgọi mà lại các bạn phải cung ứng. Để hiểu biết thêm chi tiết về đánh tên package và các ngôi trường bạn có thể áp dụng nhằm document package của khách hàng xuất sắc hơn, chúng ta cũng có thể hiểu trên trên đây.

Sau kia bạn cũng có thể đăng nhtràn vào packagist cùng submit package của bản thân. khi bạn đang nhập public repository URL của chính bản thân mình vào kia, package của bạn sẽ được tự động tích lũy thông báo theo thời hạn. quý khách hàng chỉ việc đảm bảo rằng bạn luôn luôn update tệp composer.json.

Tổng kết

Trên đây là các kiến thức bản thân gom góp được về Composer. Còn không hề ít điều nữa chúng ta cũng có thể có tác dụng cùng với Composer nhưng bản thân mong muốn tôi đã mang lại các bạn một cái chú ý toàn diện về cách Composer hoạt động.

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *