Hướng dẫn sử dụng composer cơ bản
Bài viết được sự cho phép của tác giả Kien Dang Chung
Composer quản lý sự phụ thuộc của một dự án với các thư viện lập trình bên ngoài thông qua một số các tập tin và liên quan đến một số thuật ngữ, chúng ta sẽ bắt đầu tìm hiểu cách sử dụng composer nhé.
Composer.json file chứa các thiết lập dự án
Để bắt đầu một dự án bạn cần có một file composer.json, file này chứa mô tả các thư viện ngoài mà dự án cần cài đặt (phụ thuộc) bằng từ khóa require.
{
"require": {
"monolog/monolog": "1.0.*"
}
}
Phần thiết lập trên nói lên rằng dự án cần gói có tên là monolog/monolog với yêu cầu phiên bản là 1.0.*. Composer sẽ sử dụng thông tin này và tìm kiếm các gói được đăng ký bằng từ khóa repositories hoặc trong Packagist là một kho tài nguyên các gói thư viện trên mạng. Chúng ta tiếp tục làm quen một số thuật ngữ:
Package name
Package name chứa tên nhà cung cấp và tên dự án, ví dụ trên tên nhà cung cấp và tên dự án trùng nhau là monolog. Có thể hai nhà cung cấp khác nhau đặt trùng tên dự án, ví dụ igorw/json là dự án json của nhà cung cấp igorw khác với gói thư viện seldaek/json là dự án json của nhà cung cấp seldaek.
Hạn chế phiên bản gói thư viện
Chúng ta có thể hạn chế phiên bản gói cần cài đặt để đảm bảo dự án hoạt động tốt với tính năng của gói ở một số phiên bản. Trong ví dụ trên, chúng ta yêu cầu gói monolog/monolog với hạn chế phiên bản là 1.0.* tức là các phiên bản >1.0 và <1.1 thỏa mãn yêu cầu.
Sử dụng composer cài đặt các gói cần thiết
Thực hiện cài đặt các gói đã được khai báo trong composer.json bằng lệnh
php composer.phar install
Nếu bạn đã thêm đường dẫn đến composer.bat vào biến môi trường PATH thì chỉ cần gõ ngắn gọn hơn:
composer install
Khi chạy lệnh cài đặt này sẽ có hai tình huống xảy ra:
- Nếu trước đó bạn chưa chạy lệnh này bao giờ sẽ không có file composer.lock. Composer sẽ đơn giản là đọc thông tin các gói cần thiết trong composer.json và tải phiên bản mới nhất trong hạn chế phiên bản về thư mục vendor trong dự án. Trong ví dụ trên khi thực hiện lệnh composer install xong chúng ta sẽ thấy có thư mục monolog/monolog trong thư mục vendor của dự án. Khi composer cài đặt xong, tất cả các gói cùng với phiên bản chính xác sẽ được lưu vào composer.lock, bởi vậy tất cả mọi người tham gia dự án sẽ bị lock ở cùng một phiên bản các gói thư viện lập trình.
- Nếu file composer.lock tồn tại, có nghĩa là bạn đã chạy lệnh install trước đó hoặc có thể một ai đó đã chạy lệnh install và commit file composer.json. Chạy lệnh install khi có tập tin composer.lock giúp Composer sử dụng phiên bản chính xác được liệt kê trong composer.lock và đảm bảo phiên bản các gói thư viện sẽ phù hợp với mọi người đang tham gia trong dự án. Kết quả bạn sẽ có các phiên bản được yêu cầu trong composer.json nhưng không phải tất cả chúng ở phiên bản mới nhất do một số liệt kê trong composer.lock đã phát hành phiên bản mới hơn. Thiết kế này đảm bảo dự án của bạn không bị phá vỡ do những thay đổi bất ngờ trong các gói thư viện.
Commit composer.lock với trình quản lý phiên bản
Như đã viết ở trên, composer.lock sẽ ngăn chặn việc tự động lấy xuống các phiên bản mới nhất, để cập nhật chúng sử dụng lệnh update. Khi chạy lệnh này nó sẽ lấy tất cả các phiên bản mới nhất phù hợp với hạn chế phiên bản trong composer.json và sau đó nó update các thông tin phiên bản chính xác vào composer.lock.
php composer.phar update
hay ngắn gọn
composer update
Chú ý: Composer sẽ hiển thị một cảnh báo khi sử dụng lệnh install mà file composer.json và composer.lock chưa được đồng bộ. Nếu bạn chỉ muốn cập nhật một gói thư viện cụ thể, có thể sử dụng lệnh:
php composer.phar update monolog/monolog [...]
Packagist
Packagist là một nơi chứa các gói thư viện chính của Composer, bạn có thể truy cập Packagist tại https://packagist.org. Bạn có thể tải về các gói thư viện tại đây, vì vậy bạn có thể sử dụng lệnh require để yêu cầu bất kỳ gói thư viện nào có trên Packagist.
php composer.phar require vendor/package:2.*
Gói vendor/package phiên bản hạn chế 2.* sẽ được kiểm tra trong file composer.json, nếu chưa có sẽ được thêm vào phần require. Sau khi thêm hoặc thay đổi composer.json, các gói yêu cầu sẽ được cài đặt hoặc cập nhật.
Composer gọi các gói thư viện trong lập trình như thế nào?
Composer tạo ra file vendor/autoload.php, file này dùng để include vào bắt đầu sử dụng các class mà gói thư viện cung cấp.
require __DIR__ . '/vendor/autoload.php';
$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->addWarning('Foo');
Bạn có thể thêm các đoạn code riêng vào autoloader này bằng cách thêm vào trường autoload trong composer.json:
{
"autoload": {
"psr-4": {"Acme\\": "src/"}
}
}
Composer sẽ đăng ký PSR-4 cho namespace Acme. src là một thư mục nằm trong thư mục gốc của dự án, ngang mức với thư mục vendor, một file src/Foo.php chứa class Acme/Foo. Sau khi thêm autoload, bạn phải chạy lệnh dump-autoload để hệ thống build lại file vendor/autoload.php. Sau đó, bạn cũng include file vendor/autoload.php và gọi được các class mà bạn tự viết.
$loader = require __DIR__ . '/vendor/autoload.php';
$loader->addPsr4('Acme\\Test\\', __DIR__);
Thuật ngữ PSR-4 là viết tắt của PHP Standards Recommendation 4 là chuẩn quy ước viết code do nhóm FIG(Framework Interop Group) đề xuất và hiện tại có 5 chuẩn là PSR-0 đến PSR-4. Chúng tôi sẽ trở lại bài viết chi tiết các chuẩn này trong bài Các tiêu chuẩn viết code trong PHP.
Bài viết gốc được đăng tải tại allaravel.com
Có thể bạn quan tâm:
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- i iOS 18 có gì mới? Có nên cập nhật iOS 18 cho iPhone của bạn?
- G Gamma AI là gì? Cách tạo slide chuyên nghiệp chỉ trong vài phút
- P Power BI là gì? Vì sao doanh nghiệp nên sử dụng PBI?
- K KICC HCMC x TOPDEV – Bước đệm nâng tầm sự nghiệp cho nhân tài IT Việt Nam
- T Trello là gì? Cách sử dụng Trello để quản lý công việc
- T TOP 10 SỰ KIỆN CÔNG NGHỆ THƯỜNG NIÊN KHÔNG NÊN BỎ LỠ
- T Tìm hiểu Laptop AI – So sánh Laptop AI với Laptop thường
- M MySQL vs MS SQL Server: Phân biệt hai RDBMS phổ biến nhất
- S SearchGPT là gì? Công cụ tìm kiếm mới có thể đánh bại Google?