Quản lí các thư viện PHP với Composer

Quản lý các thư viện bằng composer

logo-composer-transparent5.png

Composer là một công cụ quản lý các thư viện trong các project, bạn chỉ cần khai báo nó, composer sẽ tự động tải code của các thư viện.

Composer là gì?

Composer là một Dependency Management trong PHP, công cụ quản lý các thư viện mà project của bạn sử dụng, bạn chỉ cần khai báo nó, composer sẽ tự động tải code của các thư viện, tạo ra các file cần thiết vào project của bạn, và update các thư viện nếu cần. Composer về bản chất là một cách để đưa tất cả các thư viện, class, file... của 1 bên thứ 3 như CSS frameworks, jQuery plugins và những thứ khác vào project của bạn. Composer được gọi là Dependency management, nghĩa là nó giúp bạn quản lý các thư viện, nhưng không giống như Yum hoặc Apt trong linux, nó không cho các project của bạn dùng chung một đoạn code của thư viện, mà ở mỗi project, nó sẽ tải code của thư viện về và inject vào thư mục gốc trong project của bạn, và bạn hoàn toàn được auto update các thư viện và sử dụng cho project.

Lợi ích của composer

Trước đây khi chưa có composer, khi nào muốn sử dụng thư viện nào, bạn sẽ phải download code của thư viện đó về và đặt vào thư mục của project và sử dụng. Điều này sinh ra những bất lợi sau:

  • Dung lượng project của bạn sẽ lớn vì cần phải cộng thêm code của các thư viện.
  • Nếu bạn quản lý source code bằng git, SVN ( gọi chung là Version control system ) thì khi update các thư viện, bạn phải tạo các commit, mà thực sự các commit đó không phải của bạn.
  • Bạn gặp những khó khăn trong việc update version của các thư viện. Nếu thư viện A, có sử dụng thư viện B, thư viện B sử dụng thư viện C, thì nếu một trong các thư viện này có update, bạn sẽ phải tự mình lần mò về nguồn cội của nó để update, rất phức tạp.

Composer ra đời để giải quyết các vấn đề này. Với composer, bạn sẽ cần khai báo tên và version của các thư viện mà bạn có sử dụng mà không cần phải tự tay chép code của nó vào project, composer sẽ tự động tìm và tải thư viện mà bạn cần, nếu trong thư viện đó có dùng các thư viện khác thì nó cũng sẽ tải các thư viện khác về, nó đệ quy cho đến khi tải đủ các thư viện. Khi bạn sử dụng VCS, bạn sẽ chỉ cần commit tên version, tên thư viện ở file composer.json mà không cần phải commit những thay đổi trong code của các thư viện như ngày xưa nữa. Nếu trong thư viện có sử dụng thư viện khác, và nó update code của các thư viện mà nó sử dụng, thì composer sẽ tự động update giùm bạn luôn, thật tiện lợi phải không nào.

Cài đặt composer

Trên Unix (Mac OSX và Linux) – Chuyển tới thư mục project của bạn và gõ lệnh

$ cd /path/to/my/project
$ curl -s http://getcomposer.org/installer | php

Chạy câu lệnh trên trong project. Nó sẽ cho bạn file composer.phar có thể sử dụng trong thư mục đó. Để viết câu lệnh cài đặt một cách global để có thể sử dụng nó ở bất kỳ folder nào mà bạn thích. Để thực hiện, hãy dùng lệnh sau đây:

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

Từ đây trở về sau để sử dụng composer ở bất kì thư mục nào, bạn chỉ cần gõ composer Thay vì php composer.phar Lưu ý: Composer được viết bằng PHP nên bạn phải cài PHP trước khi cài Composer

Những điều cần biết về file composer.json

Khi sử dụng Composer điểm mấu chốt của dependency management là một file JSON tên là composer.json. File composer.json cũng có cấu trúc tương tự như file package.json của npm hay Gemfile của Ruby.

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "require": {
        "laravel/framework": "4.2.*",
    },
    ....
}

Các yêu cầu autoload của bạn sẽ được project liệt kê trong key là require. Trên ví dụ là file composer.json mặc định của laravel framework version 4.2. Versioon 4.2.* có nghĩa là ta chấp nhận cái bản vá lỗi nhỏ như 4.2.17, 4.2.25 ... nhưng không nâng cấp lên bản 5.0

Bằng cách sử dụng terminal, trong project folder chúng ta thực hiện lệnh composer install. Nó sẽ đưa tất cả dependencies của tôi vào project và thực hiện các công việc cần thiết khác.

Autoloading

Đến đây thì mọi việc rất dễ dàng. Trong file chính của project, hãy thêm dòng này vào:

include_once './vendor/autoload.php';

Tất cả các package bạn cần bây giờ đã được thêm vào project, sẵn sàng cho bạn sử dụng. Hay như trong Laravel Framework bạn chỉ cần đơn giản gõ

composer dump-autoload

thì tất cả các thư viện trong composer sẵn sàng để sử dụng trong toàn bộ project.

Cập nhật package

Việc cập nhật rất đơn giản, bạn chỉ cần gõ composer update , Composer sẽ tự động cập nhật các package cho bạn. Nếu muốn cập nhật lên các phiên bản mới hơn hoặc các bản release, hãy chỉnh sửa file composer.json

Chú ý: Không bao giờ chạy lệnh composer update trong môi trường thực tế (production) mà hãy kiểm tra trên máy để tránh tình trạng không tương thích.

Kết luận

Với vài thao tác đơn giản, bạn đã có thể cài đặt cái package cần thiết. Composer giúp lập trình viên giảm bớt suy nghĩ về các package và chỉ tập trung vào ứng dụng chính của mình. Hiện tại, hầu hết các Framework đều hỗ trợ Composer, có thể kể đến như cái tên như : CodeIgniter, Symfony2, Laravel, FuelPHP… Composer được sử dụng ở mọi nơi trong thế giới PHP. Tất cả các components của các website lớn và danh tiếng như jQuery, Foundation, Bootstrap, thậm chí là chính WordPress đều có sẵn một composer package. Thêm vào đó, các đoạn code nhỏ hơn nhưng không kém phần hữu ích có thể được khôi phục thông qua composer. Các Logging packages như monolog, PHP mailers, string manipulation classes, PHP Unit và các tools khác đều có mặt trong kho package của Composer.

Tài liệu tham khảo

Easy Package Management With Composer

A Beginner’s Guide To Composer

composer document

All Rights Reserved