Sự ra đời của Composer đã giải quyết các vấn đề còn tồn đọng trong khâu quản lý thư viện của các dự án trước đây. Vậy, Composer là gì và bằng cách nào chúng ta có thể quản lý thư viện hiệu quả hơn bằng công cụ này? Hãy cùng Vietnix tìm hiểu chi tiết qua bài viết được chia sẻ dưới đây.
Composer là gì? Composer PHP là gì?
Composer là một công cụ Dependency Management (quản lý phụ thuộc) được sử dụng để quản lý các thư viện mà dự án (project) PHP của người dùng. Nói đúng hơn thì Composer sẽ quản lý sự phụ thuộc của các tài nguyên trong dự án – tức là các thư viện và gói mã nguồn mà project của họ phụ thuộc vào đó.
![Composer là gì? Tổng quan về cách quản lý thư viện bằng Composer 4 Composer là một công cụ Dependency Management (quản lý phụ thuộc)](https://static-xf1.vietnix.vn/wp-content/uploads/2024/07/Composer-la-gi-2.jpg)
Với Composer, bạn có thể khai báo và chỉ định các thư viện cần thiết cho project của mình. Sau đó, công cụ này sẽ tự động tải mã code của thư viện, đồng thời tạo ra các file cần thiết để project liên quan có thể truy cập và sử dụng chúng. Không chỉ thế, Composer còn có khả năng cập nhật các thư viện đã cài đặt ngay khi có phiên bản mới được phát hành để đảm bảo rằng thư viện của project luôn hoạt động một cách tối ưu và hiệu quả nhất.
Lợi ích của Composer
Composer được lấy cảm hứng từ các công cụ quản lý gói mã nguồn mở khác như npm của Node. Về cơ bản, Composer có cách thức hoạt động khá tương đồng với APT trên Ubuntu và Yum trên CentOS. Tuy nhiên, điểm khác biệt nằm ở chỗ thay vì quản lý gói trên toàn bộ hệ điều hành như APT và Yum, Composer sẽ chủ yếu tập trung vào việc quản lý các thư viện của dự án PHP.
Trước khi Composer ra đời, các nhà phát triển phải đối mặt với nhiều vấn đề khác nhau khi quản lý thư viện project, bao gồm:
- Bạn phải tải các thư viện nếu sử dụng từ nguồn bên ngoài và đưa chúng vào trong thư mục của project. Quá trình tốn khá nhiều thời gian và đôi khi còn dẫn đến một số lỗi phức tạp.
- Nếu một thư viện sử dụng hoặc phụ thuộc vào một thư viện khác, bạn sẽ gặp khó khăn trong việc quản lý và cập nhật các phiên bản của thư viện. Chẳng hạn như thư viện A sử dụng thư viện B, và thư viện B lại sử dụng thư viện C, khi một trong ba có update, bạn phải mất nhiều thời gian để xác định và cập nhật các thay đổi một cách đồng nhất.
Tuy nhiên, từ khi có sự hỗ trợ của Composer, mọi việc đã được tối ưu hóa với khả năng:
- Khai báo các thư viện mà project sử dụng.
- Quản lý tập trung các thư viện và phiên bản tương ứng tại file composer.json.
- Tìm và cài đặt các phiên bản của thư viện đã được khai báo trong file composer.json.
Các yếu tố quan trọng đối với Composer
Dưới đây là những yếu tố quan trọng đối với Composer.
composer.json và composer.lock
Composer.json
và composer.lock
là 2 file rất quan trọng đối với các dự án sử dụng composer. Cụ thể, bạn sẽ khai báo các phụ thuộc của dự án (hay còn được gọi là dependencies) vào file composer.json, bao gồm các thông tin liên quan như tên, phiên bản, source, licenses… và các nội dung sẽ được viết với định dạng JSON.
Dưới đây là một ví dụ mà bạn có thể tham khảo:
{ "name": "wataridori/bphalcon", "type": "project", "description": "A small library which implement some features to phalcon", "license": "GPL-3.0", "authors": [ { "name": "Tran Duc Thang", "email": "thangtd90@gmail.com" } ], "require": { "php": ">=5.4" } }
Trong khi đó, file composer.lock sẽ lưu trữ thông tin về các dependencies đã được cài đặt. Chẳng hạn như khi bạn cài đặt lần đầu bằng lệnh install, Composer sẽ đọc thông tin về dependencies đó trong composer.json để cài đặt và tạo ra hoặc cập nhật file composer.lock.
Lúc này, file composer.lock có nhiệm vụ lưu trữ thông tin cụ thể của các dependencies đã được cài đặt, bao gồm những phiên bản cụ thể và các phụ thuộc của chúng. Điều này đảm bảo rằng sau khi bạn commit composer.json và composer.lock lên version control, tất cả mọi người đều sẽ nhận được cùng một bản cài đặt của các dependencies với phiên bản giống nhau.
Để hiểu rõ hơn về nguyên lý trên, chúng ta sẽ đến với một ví dụ chi tiết hơn. Chẳng hạn như trong file composer.json có ghi yêu cầu rằng package/A phải có phiên bản >=3.4.5. Khi người dùng cài đặt lần đầu tiên, Composer sẽ tìm và cài đặt phiên bản mới nhất của package/A thỏa mãn yêu cầu – tương đương với phiên bản 3.4.5. Lúc này, thông tin chi tiết về phiên bản đó sẽ được ghi vào file composer.lock.
Sau đó, trong những lần cài đặt tiếp theo, mặc dù package/A đã có phiên bản mới hơn – 3.4.6 chẳng hạn, thì Composer vẫn chỉ cài đặt phiên bản 3.4.5 vì thông tin đó đã được lưu lại trong file composer.lock. Như vậy, Composer sẽ sử dụng thông tin từ file composer.lock để cài đặt các dependencies thay vì file composer.json. Thông qua đó, bạn có thể tạo nên sự đồng nhất trong môi trường phát triển của dự án.
Packagist
Packagist là kho lưu trữ (repository) chính được sử dụng để lưu trữ các thông tin quan trọng về gói phần mềm (package) được phân phối bởi Composer. Cụ thể, packagist cho phép người dùng truy cập vào trang web để tìm kiếm các thư viện và gói phần mềm mà họ cần. Sau đó, thông qua composer, người dùng có thể cài đặt chúng một cách nhanh chóng, hoặc tự tạo ra một package cho riêng mình và chia sẻ chúng cho những người dùng khác tại https://packagist.org.
Cách sử dụng Composer
Trước tiên, bạn cần có một file composer.json để sử dụng Composter. Như đã chia sẻ ở trên, file này sẽ lưu trữ thông tin mô tả về các dependencies mà project cần, cụ thể là:
{ "name": "laravel/laravel", "description": "The Laravel Framework.", "keywords": ["framework", "laravel"], "license": "MIT", "require": { "laravel/framework": "5.8.*", }, .... }
Bạn sẽ nhìn thấy các yêu cầu về dependencies tại mục require. Bên trên là ví dụ về một file composer.json mặc định của Laravel framework phiên bản 5.8, phần dấu sao *
được hiểu là chúng ta chấp nhận cả những phiên bản được cập nhật mới hơn như 5.8.11, 5.8.12…
Thông qua terminal, bạn có thể thực hiện một lệnh composer install trong thư mục project của mình. Khi lệnh được thực thi, máy tính sẽ tự động tìm trong thư mục đó có chứa file composer.json không, sau đó thực hiện đúng với các yêu cầu của file, bao gồm việc cài đặt các dependencies cho project cùng một số công việc liên quan.
Autoloading
Trong file chính của project, bạn sử dụng dòng lệnh sau để thêm tất cả các package cần thiết vào project:
include_once './vendor/autoload.php';
Đối với Laravel, bạn cũng có thể tham khảo dòng lệnh dưới đây:
composer dump-autoload
Ngay sau đó, tất cả các thư viện và package mà bạn đã cài đặt trong Composer đều sẽ sẵn sàng để sử dụng trong toàn bộ project của bạn.
Cập nhật package
Để cập nhật package, bạn chỉ cần gõ dòng lệnh composer update
, ngay sau đó, Composer sẽ tự động update các package đang sử dụng. Trong trường hợp bạn cần cập nhật lên các version mới hơn hoặc version release, bạn có thể chỉnh sửa trong file composer.json.
Cách cài đặt Composer
Trước khi cài đặt Composer, bạn cần đảm bảo rằng thiết bị của mình đã được cài sẵn phiên bản PHP từ 5.3.2 trở lên. Đồng thời, đừng quên cài cả Git để đảm bảo rằng các gói thư viện được hỗ trợ tốt nhất.
Trên Windows
Trên thiết bị chạy hệ điều hành Windows, bạn có thể chọn một trong hai cách cài đặt Composer gồm:
Cách 1: Cài tự động
- Đây là cách đơn giản và dễ thực hiện nhất. Đầu tiên, bạn tải Composer-Setup.exe tại https://getcomposer.org/ về rồi cài đặt như một phần mềm thông thường.
- Composer Installer sẽ tự động cài đặt và thêm vào PATH sẵn để người dùng có thể thực thi lệnh Composter trên CMD (Command Prompt).
![Composer là gì? Tổng quan về cách quản lý thư viện bằng Composer 5 Download tại web](https://static-xf1.vietnix.vn/wp-content/uploads/2024/07/cach-cai-dat-composer-2.webp)
![Composer là gì? Tổng quan về cách quản lý thư viện bằng Composer 6 Chọn Composer-Setup.exe](https://static-xf1.vietnix.vn/wp-content/uploads/2024/07/cach-cai-dat-composer-1-1.webp)
Cách 2: Cài đặt thủ công
- Tương tự với cách trên, bạn cũng cần phải truy cập vào https://getcomposer.org/ và tải Composer.phar về thiết bị.
- Tiếp theo, bạn chuyển thư mục Composter vào thư mục mà bạn muốn.
- Sau đó, hãy tạo một file có tên là composer.bat và nội dung
echo @php “%~dp0composer.phar” %*>composer.bat
. - Bây giờ, bạn cần thêm thư mục Composer vào PATH environment variable để có thể thực thi lệnh Composer trên CMD.
- Cuối cùng, hãy mở CMD lên rồi gõ lệnh
Composer -v
để kiểm tra xem Composer đã được cài đặt và cấu hình đúng hay chưa.
Trên Linux/ Unix/ OSX
Nhìn chung, cách cài đặt Composer trên Unix, Linux và OS X khá giống với nhau. Bạn có thể chọn một trong hai cách sau để tiến hành quá trình này:
Cách 1
- Đầu tiên, bạn tải
composer.phar
về từ https://getcomposer.org/. - Sau đó, hãy chuyển Composer vào thư mục bin với câu lệnh
sudo mv composer.phar /usr/local/bin/composer
.
Cách 2
Sau khi tải Composer về, bạn cũng có thể cài đặt bằng cách mở Terminal lên rồi nhập các dòng lệnh sau:
sudo php -r “readfile(‘https://getcomposer.org/installer’);” > composer-setup.php sudo php composer-setup.php –install-dir=bin sudo php -r “unlink(‘composer-setup.php’);”
Các câu lệnh của Composer
Dưới đây là một số câu lệnh thông dụng của Composer mà bạn cần nắm rõ:
Các Global Option
–verbose (-v)
: Hiển thị message dài.–help (-h)
: Hiển thị thông tin help.–quiet (-q)
: Không xuất message khi hệ thống đang thực thi câu lệnh.–no-interaction (-n)
: Không hỏi bất cứ điều gì khi hệ thống đang thực thi câu lệnh.–working-dir (-d)
: Thiết lập thư mục làm việc (working directory) mà Composer sử dụng khi thực thi lệnh.–profile
: Hiển thị thời gian và bộ nhớ được sử dụng khi thực thi câu lệnh.–ansi
: Xuất ra kết quả với mã hóa ANSI.–no-ansi
: Ngừng việc xuất ra kết quả với mã hóa ANSI.–version (-V)
: Hiển thị phiên bản hiện tại của Composer.
Các câu lệnh
init
: Tạo ra file composer.json với mục đích khai báo thông tin cho packageinstall
: Đọc thông tin từ file composer.json trong thư mục hiện tại và tổng hợp các package được khai báo trong đó, đồng thời cập nhật nội dung vào trong file composer.lockrequire
: Thêm hoặc chỉnh sửa nội dung của một requirement (yêu cầu) vào file composer.json, các package đã add hoặc chỉnh sửa sẽ được cài đặt và cập nhật ngay sau đó.global
: Cho phép thực hiện các lệnh như install, update trên toàn bộ hệ thống thay vì chỉ dành riêng cho bất kỳ dự án nào. Tuy nhiên, bạn buộc phải chạy câu lệnh này từ thư mục COMPOSER_HOME của Composer.search
: Cho phép người dùng tìm kiếm nhanh chóng một package trong project hoặc packagist.org của mình.show
: Hiển thị các package hiện đang khả dụng. Trong trường hợp bạn thêm vào một tham số là tên package ở cuối, bạn sẽ nhìn thấy thông tin cụ thể về package đó.depends
: Hiển thị thông tin về sự phụ thuộc giữa các package, package nào đang phụ thuộc vào package nào.validate
: Kiểm tra tính hợp lệ của nội dung trong file composer.json.status
: Kiểm tra các thay đổi bên trong dependencies (do mình thực hiện).self-update
:Cập nhật chính bản thân Composer.config
: Chỉnh sửa, thiết lập các cài đặt cơ bản.create-project
: Tạo project từ package sẵn có, chẳng hạn như triển khai một package như một ứng dụng, hoặc phát triển tiếp dự án từ một package đã có.dump-autoload
: Cập nhật trình tải tự động (autoloader) khi có class mới trong classmap của package.licenses
: Hiển thị tên và phiên bản của từng license (giấy phép) cho các package đã được cài đặt.run-script
: Sử dụng để chạy script thủ công.diagnose
: Kiểm tra các vấn đề đang xảy ra với Composer.archive
: Tạo file nén mới (file rar hoặc zip) cho một package tương ứng với phiên bản được chỉ định.help
: Hiển thị thông tin về một câu lệnh nhất định.
Lời kết
Như vậy, nội dung trên đã giúp bạn nắm rõ phần mềm Composer là gì và cách cài đặt Composer trên các hệ điều hành khác nhau. Có thể nói rằng, sự xuất hiện của Composer đã mang lại rất nhiều lợi ích cho các nhà phát triển. Vậy nên, đừng quên chia sẻ bài viết để mọi người cùng tham khảo và áp dụng cho dự án của mình, bạn nhé!