Tìm hiểu về Composer
5 (100%) 1 vote

Composer là gì ?

Composer là công cụ để quả lý package hay library PHP. Composer sẽ cài đặt những libraries vào một thư mục nào đó nằm bên trong project bạn đang làm việc.

Về cơ cản, Composer sẽ không cài đặt global. Chính vì thế nó còn được gọi là Dependency Manager. (Những package được cài đặt được gọi là Dependency, còn Composer là công cụ quản lý các Dependency)

Khi nói đến đây chắc bạn sẽ thấy Composer rất giống với bundler của Ruby, hay npm của Node. Vâng, nó là một công cụ tương tự như thế, được sinh ra dành cho PHP.

Cài đặt Composer

Composer là công cụ dành cho PHP, thế nên đương nhiên nó đòi hỏi bạn phải cài đặt PHP từ trước. Composer phiên bản hiện tại yêu cầu phiên bản PHP >= 5.3.2

Thông tin chi tiết về hướng dẫn cài đặt Composer có thể xem ở trang web http://getcomposer.com

Nhìn chung, bạn chỉ cần chạy duy nhất một câu lệnh như sau:

curl -sS https://getcomposer.org/installer | php

Câu lệnh trên sẽ build ra một file composer.phar, và bạn có thể chạy lệnh của composer bằng cách dùng lệnh

php composer.phar

Bạn nên rename và đưa file composer.phar đó vào thư mục bin để có thể gọi lệnh composer global và dễ dàng hơn.

mv composer.phar /usr/local/bin/composer

composer.json và composer.lock

Đây là 2 file rất quan trọng trong một package composer.

composer.json là nơi ta khai báo những dependencies dùng trong project, những thông tin về tên, phiên bản, licenses, source … Nội dung được viết theo JSON format.

Chẳng hạn như ta có một ví dụ sau:

{
    "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"
    }
}

composer.lock là nơi lưu trữ thông tin về dependencies đã được cài đặt. Ví dụ khi bạn dùng lệnh install để cài đặt lần đầu thì composer sẽ đọc thông tin về dependencies ở trong file composer.json, sau đó cài đặt và tạo ra file composer.lock để lưu thông tin cụ thể về những dependencies đó. Giả sử bạn commit cả 2 file composer.jsoncomposer.lock vào version control của mình, rồi bất cứ người nào tải code về thì dù có cài đặt vào thời điểm khác nhau đi chăng nữa thì vẫn sẽ nhận được những dependencies với những version giống nhau, do nó được đọc từ file composer.lock, chứ không phải file composer.json.

Hãy đi vào một trường hợp cụ thể hơn. Trong file composer.json có ghi yêu cầu là package/A có version >= 3.4.5, và khi bạn cài lần đầu, version mới nhất của nó là 3.4.5 thì package/A với version 3.4.5 sẽ được cài đặt và thông tin được lưu vào file composer.lock. Sau đó người khác tải code về, và cài đặt dependencies thì mặc dù lúc đó package/A có ra version 3.4.6 đi chăng nữa thì composer vẫn sẽ chỉ cài đặt bản 3.4.5 mà thôi, do thông tin này đã được lưu trong composer.lock.

Packagist

Packagist là repository chính để lưu những thông tin về composer package. Bạn có thể vào trang web của packagist để tìm kiếm những library cần thiết và cài đặt chúng một cách nhanh chóng và dễ dàng thông qua composer, hoặc bạn cũng có thể tự tạo một package và chia sẻ với cộng đồng thông qua trang https://packagist.org .

Các câu lệnh của Composer

Các Global Option

  • –verbose (-v): Hiện message dài
  • –help (-h): Hiện thông tin help
  • –quiet (-q): Không xuất ra message gì trong khi chạy câu lệnh
  • –no-interaction (-n): Không hỏi gì trong khi chạy câu lệnh
  • –working-dir (-d): Thiết lập working dir chỉ định
  • –profile: Hiển thị thời gian và memory được sử dụng
  • –ansi: Xuất kết quả với encoding là ANSI
  • –no-ansi: Dừng việc xuất kết quả với encoding là ANSI
  • –version (-V): Hiển thị version hiện tại của Composer

Các câu lệnh

  • init : Tạo ra file composer.json nhằm khai báo các thông tin cho package
  • install : Đọc thông tin từ file composer.json tại thư mục đang đứng, tổng hợp các package cần cài đặt, và cài đặt chúng vào một thư mục nào đó bên trong project.
  • update : Update những dependencies đã được cài đặt lên version mới nhất, đồng thời update nội dung vào file composer.lock
  • require : Add hoặc thay đổi nội dung một requirement vào file composer.json. Sau đó package được add vào hoặc thay đổi sẽ được cài đặt hoặc update.
  • global : Là command cho phép ta thực hiện các command khác như install, update một cách global. Tuy nhiên câu lệnh global yêu cầu ta phải chạy từ thư mục COMPOSER_HOME
  • search : Cho phép bạn tìm kiếm một package từ trong project của mình, hoặc từ packagist.org
  • show : Hiện ra những package khả dụng. Ngoài ra nếu đưa thêm tham số là tên package ở cuối thì sẽ hiện ra thông tin về package đó.
  • depends : Thông tin về những package nào phụ thuộc vào package nào
  • validate : Kiểm tra xem nội dung file composer.json có hợp hệ hay không
  • status : Check xem có gì được thay đổi ở bên trong dependencies (do mình thực hiện) hay không.
  • self-update : Update bản thân composer
  • config : Chỉnh sửa các setting cơ bản
  • create-project : Tạo ra một project từ package đã có sẵn. (chẳng hạn như bạn muốn deploy một package là một application, hay muốn develop tiếp từ một package đã có …)
  • dump-autoload : Update autoloader khi có khi có class mới tong classmap package.
  • licenses : Hiện thị tên và version của tưng license cho từng package được install.
  • run-script : Dùng để chạy script một cách thủ công
  • diagnose : Check xem có vấn đề gì với composer hay không
  • archive : Tạo ra một file nén (zip hoặc tar) cho một package ở một version chỉ định
  • help : Hiện thị thông tin về một câu lệnh nào đó

Một ví dụ composer’s package

composer create-project wataridori/bphalcon install_path

Chú ý: Phiên bản Composer được sử dụng làm ví dụ hay giải thích ở trên là phiên bản mới nhất tại thời điểm thực hiện bài viết.

Composer version 1e27ff5e22df81e3cd0cd36e5fdd4a3c5a031f4a 2014-08-11 15:46:48