Giới Thiêu
Composer là công cụ cho việc quản lý các phụ thuộc (Dependency Management) trong PHP. Nó cho phép ta định nghĩa các thư viện (Libraries) liên quan mà dự án (Project) PHP cần và nó sẽ cài đặt chúng vào dự án.
Quản lý phụ thuộc:
Composer dành cho PHP giống nhưng npm của nodejs hay ruby thì có bundler. Nó không quản lý các gói (Package). Composer giao dịch (Deals) với các gói hay các thư viện và quản lý chúng trong từng dự án và cài đặt chúng vào một thư mục (vendor) trong dự án đó. Mặc định nhưng thư viện này là của riêng từng dự án.
Bạn làm được gì với Composer:
- Bạn có một dự án và nó phụ thuộc vào một vài thư viên ngoài.
- Trong dự án của bạn có một vài thư viện bị phụ thuộc vào một số thư viện khác.
- Bạn tự định nghĩa những sự phụ thuộc cần thiết cho dự án của bạn.
- Composer giúp bạn tìm ra phiên bản (version) cần thiết và cài đặt chúng.
Cài đặt và sử dụng
Yêu cầu
- Để chạy được Composer, cần cài đặt PHP 5.3.2+. Trong quá trình cài đặt (có thể) Composer sẽ cảnh báo mốt số cấu hình PHP không phù hợp, bạn cần điều chỉnh theo yêu cầu.
- Khi cài đặt cũng cần có một số trình quản lý phiên bản (Version-Controlled). Vì vậy bạn cần cài git, svn hoặc hg.
- Composer có thể chạy trên nhiều hệ điều hành (Window, Linux, OSX).
Cài đặt
*NIX
Trỏ đến thư mục cần cài đặt rồi cài đặt Composer
$ curl -sS https://getcomposer.org/installer | php
Sẽ có một vài kiểm tra cấu hình php và download composer.phar về thư mục. Composer binary is PHAR (PHP ARchive – nó là một định dạnh đóng gói [an archive format] của PHP có thể sử dụng để chạy dòng lệnh [command line]).
Để có thể sử dụng bất kỳ đâu (Global) với câu lệnh Composer, chạy lệnh sau
$ sudo mv composer.phar /usr/local/bin/composer
Windows
Tải và chạy file Composer-Setup.exe để cài đặt composer vào hệ thống. Trong quá trình cài đặt chú ý chọn cài đặt command line menu để có thể sử dụng composer ở bất cứ thư mục nào một cách nhanh chóng.
Sử dụng
Truy cập vào thư mục dự án. Bạn cần định nghĩa thư viện cần dùng trong file "composer.json". Ví dụ tôi muốn sử dụng monolog cho dự án của tôi có sẽ khai báo trong file "composer.json"
{ "require": { "monolog/monolog": "1.2.*" } }
Để composer tìm và cài đặt các thư viện được khai báo trong file "composer.json" (Cụ thể ở đây ta khai báo thư viện monolog)
$ composer install
Sau khi chạy lệnh trên các bạn có thể tự kiểm tra lại thư mục dự án của mình. Có 2 điểm cần chú ý ở đây là:
-
Sau khi cài đặt xong, composer sẽ sinh ra một file "composer.lock". File này sẽ ghi nhận lại phiên bản của các thư viện mà bài đã cài đặt được định nghĩa trong file "composer.json" bằng việc đánh dấu phiên bản của file "composer.json". Nếu bạn sửa bất kỳ gì trong file "composer.json" rồi chạy lệnh install sẽ nhận cảnh báo: "Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.". Như vậy tốt nhất bạn nên commit cả 2 file "composer.json" và "composer.lock" để dễ dàng hơn trong việc quản lý phiên bản của các thư viện ngoài. Trong trường hợp muốn cập nhật các phiên bản khác cũng như install thêm các thư viện khác bạn có thể sử dụng lệnh sau:
$ composer update
Hoặc:
$ composer update monolog/monolo
-
Bạn kiểm tra trong thư mục "vendor" sẽ thấy file "autoload.php". Như vậy chỉ cần dùng câu lệnh PHP sau thì ta sẽ dễ dàng sử dụng được code của các thư viện của hãng thứ 3:
require 'vendor/autoload.php';
Ngoài ra chúng ta còn có thể thêm chính code của chúng ta vào autoloader bằng cách dùng trường "autoload" trong file "composer.json"
{ "autoload": { "psr-4": {"Acme\\": "src/"} } }
Vâng, vậy là bây giờ ta đã có thể thỏa mái sử dụng code của bên thứ 3 hoặc của chính mình. Công tác quản lý cũng trở nên đơn giãn và thông minh hơn. Hy vọng bài viết về Composer hữu ích. Cảm ơn tất cả đã theo dỏi bài viết, chi tiết có thể xem thêm tại: https://getcomposer.org/