Composer là một công cụ quản lý các Dependency
[bạn có thể hiểu là các thư viện mà chỉ dự án của bạn sử dụng - không dùng bởi nhiều dự án] trong PHP. Vậy Composer
quản lý thư viện dựa trên từng Project PHP riêng biệt của bạn, nó cài đặt các thư viện này vào một thư mục có tên vendor
trong dự án [mỗi dự án có một thư mục vendor
]. Composer tự động sinh ra file vendor/autoload.php
, từ file này giúp bạn nạp các thư viện đã cài đặt [Nó áp dụng cơ chế tự động nạp theo chuẩn PSR-4 Autoloader] và cả PSR-0
[lỗi thời].
Lợi ích khi sử dụng Composer
Nói chung là các dự án PHP ngày nay là không thể thiếu Composer, vì chúng thường sử dụng rất nhiều loại thự viện. Nếu cài đặt thư viện thủ công thật sự là ác mộng [tích hợp, cập nhật cực cừ mệt mỏi]. Khi có Composer dùng thư viện nào chỉ việc khai báo hay gõ tích hợp, khi cập nhật thự viện nào đó, nó cũng tự động giúp bạn cập nhật luôn các thư viện khác mà thư viện cập nhật dùng tới.
Cài đặt Composer
Composer được viết bằng PHP
mã đóng gói dạng PHAR
, nên muốn dùng Composer phải chắc chắn máy đã cài đặt PHP. Từ terminate
gõ lệnh sau kiểm tra xem máy có PHP hay chưa, nếu chưa có bạn phài cài PHP trước [xem Cài đặt PHP]
# php -v PHP 5.6.25 [cli] [built: Aug 18 2016 11:39:15] Copyright [c] 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright [c] 1998-2016 Zend Technologies
Cài đặt Composer trên Windows
Tải Composer-Setup.exe và chạy nó, thật đơn giản.
Sau khi cài đặt, để gọi được lệnh Composer ở bất kỳ đâu [dù đứng ở thư mục nào] thì thêm vào hệ thống Windows, giá trị C:\ProgramData\ComposerSetup\bin
vào biến môi trường PATH
Cài đặt Composer trên CentOS/RHEL/Ubuntu
# sudo curl -sS //getcomposer.org/installer | php # Để gọi được Composer ở bất kỳ đâu # mv composer.phar /usr/local/bin/composer
Kiểm tra Composer và vài lệnh tổng quan
Từ dòng lệnh terminate
gõ cách lệnh:
#Kiểm tra phiên bản Composer # composer -v Composer version 1.8.0 2018-12-03 10:31:16 #Cập nhật Composer # composer -selfupdate #Xóa cache composer | xóa đi các thư viện tải sẵn trong cache, để bắt nó tải lại # composer clearcache #Tìm các gói thưu viện # composer search từ_tìm_kiếm
Khi chạy các lệnh Composer cho từng
dự án, bạn chạy trên dòng lệnh terminate
, bắt buộc chyển đến folder chứa dự án để chạy bằng lệnh cd
.
Sử dụng Composer cơ bản trong dự án PHP
Composer cho một dự án mới
Mọi thiết lập Composer cho dự án đều chứa trong file composer.json
, nếu chưa có file này cho dự án thì bắt đầu khởi tạo như sau:
# Composer int
Sau lệnh này nó yêu cầu bạn nhập một số thông tin của dự án, hãy nhập thông tin của bạn vào
Package name [/] [xt/xt]: xtlab/myproject01 Description []: Day la du an PHP Author [XTLAB , n to skip]: XUANTHULAB Minimum Stability []: beta Package Type [e.g. library, project, metapackage, composer-plugin] []: License []: Define your dependencies. Would you like to define your dependencies [require] interactively [yes]? no Would you like to define your dev dependencies [require-dev] interactively [yes]? no Do you confirm generation [yes]? y
Sau khi nhập thông tin về dự án của bạn như trên xong, Composer
đã sinh ra file composer.json
{ "name": "xtlab/myproject01", "description": "Day la du an PHP", "authors": [ { "name": "XUANTHULAB", "email": "" } ], "minimum-stability": "beta", "require": {} }
Sau này, bạn các tùy biến, thiết lập, tích hợp thư viện trên dự án của bạn sẽ tự động cập nhật vào file này!
Tích hợp thư viện vào dự án bằng Composer
Trước hết xác định xem dự án của bạn cần thư viện nào, tìm tại //packagist.org/
Ví dụ, bạn muốn sử dụng thư viện monolog/monolog phiên bản mới nhất [thư viện lưu log thông dụng cho php], thì từ dòng lệnh gõ
# composer require monolog/monolog
Sau lệnh này, Composer sẽ tải tất cả các thành phần để dùng được thư viện monolog/monolog
vào dự án của bạn, nó lưu tại vendor
, đồng thời cũng có luôn file vendor/autoload.php
Mở lại file composer.json
bạn thấy đã có thêm đoạn mã:
{ "require": { "monolog/monolog": "^1.24" } }
Điều này cho biết, dự án bạn dùng thư viện nào, sau này bạn chia sẻ dự án [copy dự án đi cho khác] bạn không cần phải copy cả thư mục vendor
, mà chỉ cần file composer.json
, composer sẽ cập nhật lại vendor
cho bạn.
Ngoài cách gõ lệnh như trên, bạn cũng có thể viết thư viện cần dùng vào composer.json
rồi gọi lệnh:
# composer update
Nó cũng sẽ kiểm tra và cài đặt tất cả các thư viện cần thiết nếu chưa có. Ví dụ, giờ bạn lại muốn dùng thêm thư viên filp/whoops, phiên bản 2.3.1 [thư viện chuyên hiện thị thông báo lỗi đẹp mắt - tiện dụng để debug].
Thay vì cách gõ lệnh như trên, bạn sẽ chỉnh sửa composer.json
thêm vào nội dung phần
require
nội dung mô tả thư viện whoops: "tên-thư-viện":"^phiên-bản-nhỏ-nhất"
{ "require": { "monolog/monolog": "^1.24", "filp/whoops": "^2.3.1" } }
Sau đó gõ lệnh composer update
, để cài đặt thư viện. Với cách này bạn có thể liệt kê tất cả các thư viện cần dùng, rồi gõ một lệnh để cài đặt.
Như trên đã nói, Composer
sinh ra file vendor/autoload.php
, bạn chỉ việc include
, là có thể sử dụng các thư viện.
Ví dụ, sử dụng thư viện monolog/monolog
ở trên trong file index.php