Trang chủ » Composer là gì (Phần 1)?
Lập trình PHP

Composer là gì (Phần 1)?

Xin chào mọi người!

Lâu lắm rồi mình mới có dịp bắt đầu viết blog trở lại. Gần đây blog gặp phải vài sự cố nên mình không thể tiếp tục viết blog, và mình đã khắc phục vài vấn đề đó. Và hơn thế nữa là sắp đến hè rồi, chuẩn bị kỉ niệm 1 năm thành lập blog và tất nhiên là hè thì mình sẽ có nhiều thời gian để chăm chút cho những bài viết chất lượng hơn rồi 😛

Composer là gì?

Mình nghĩ sẽ có nhiều bạn sẽ thắc mắc về bài viết này. Thật sự thì mình chỉ có dịp tiếp xúc với Composer được vài ngày, và thấy nó thật sự rất hay. Và đây cũng sẽ là bài viết mở đầu cho chuyên mục Lập trình PHP. Ở bài viết này mình sẽ giới thiệu một cách tổng quan về Composer, và nó sẽ làm được những gì.

Composer được ra mắt vào ngày 1/3/2012, và kể từ đó đến nay, Composer được phổ biến rất rộng rãi như là 1 công cụ thiết yếu cho PHP.

Composer là công cụ dùng để quản lý các dependencies (tạm dịch là khi 1 package/module A phụ thuộc vào 1 package/module B để có thể hoạt động, thì ta nói 2 package/module này có dependency/coupling với nhau), tuy nhiên nó không được gọi là 1 package manager (mặc dù nó quản lý và làm việc với các packages hay libraries). Composer không cho phép ta dùng chung library, mà nó sẽ tạo ra 1 thư mục (ví dụ như vendor) và tải các packages/libraries vào đó. Vậy nên nó được gọi là dependency manager.

Bản thân Composer cũng lấy ý tưởng từ npm của Node, hay bundler của Ruby.

Điên đầu vì quản lý packages/libraries…

Giả sử bạn đang muốn tạo ra 1 trang web sử dụng các libraries như Bootstrap, jQuery hay các thư viện có sẵn khác trên mạng thì sẽ làm như thế nào? Chắc hẳn từ trước đến nay cách thủ công mà ta thường làm là “download” bộ library đó về, để nó ở 1 thư mục “includes” nào đấy và thêm vào project của mình. Tất nhiên điều đó vẫn OK và project của bạn vẫn chạy trơn tru.

Nhưng một ngày đẹp trời, trang chủ của 1 library nào đó vừa update phiên bản mới, và bạn phải làm gì? Download lại library đấy, tìm trong thư mục “includes” và ghi đè vào phiên bản cũ trên máy. Lúc đấy bạn phải nên cầu trời rằng project của bạn vẫn chạy trơn tru vì đôi lúc library đó thêm vào vài tính năng, và bỏ đi bớt vài tính năng, tất nhiên tính năng bỏ đi đấy vẫn còn nằm đâu đó trong project của bạn, và ôi thôi… 1 nùi bugs hiện ra :)). Lúc đấy bạn sẽ muốn trở về phiên bản trước đây, nhưng biết là phiên bản nào? Download lần lượt các phiên bản cũ hơn và thử đến khi hết bug? Thấy mệt chưa =)).

Quản lý chưa bao giờ là dễ dàng...
Quản lý chưa bao giờ là dễ dàng…

Đấy chỉ là 1 library, nhưng với khoảng 8 – 9 cái giống vậy thì sao? Quản lý hết đống dependencies trong 1 thư mục “includes” như vậy coi bộ không khả quan cho lắm.

Composer ra đời để giải quyết vấn đề này, bạn chỉ cần khai báo tên và version của các libraries mà bạn muốn sử dụng mà không cần phải download cả source về, sau đó nó sẽ tự tìm và download các libraries mà bạn cần. Nếu trong các libraries đó mà có sử dụng các libraries khác thì Composer cũng download về luôn, cho đến khi tải tất cả các libraries về.

Việc cài đặt Composer, các bạn có thể vào trang chủ nhé, tất tần tật ở đấy cả :v.

Sử dụng Composer:

Để sử dụng composer, ta cần phải có 1 file composer.json. File này chứa thông tin mô tả các dependencies mà ta cần trong project. Nội dung của file có thể là:

{
    "require": {
        "monolog/monolog": "<= 1.19.0"
    }
}

Các yêu cầu về dependencies sẽ được liệt kê trong key require. Phía trên là 1 ví dụ cho file composer.json cho trường hợp ta muốn sử dụng Monolog phiên bản nhỏ hơn hoặc bằng 1.19.0. Nhưng như thế vẫn chưa đủ, ta cần phải sử dụng terminal, thực hiện lệnh composer install, nó sẽ tìm trong thư mục hiện hành file composer.json và thực hiện các công việc mà file đó yêu cầu.

Sau khi install thành công...
Sau khi install thành công…

Khi install thành công, trong project sẽ xuất hiện 1 thư mục vendor cùng với file composer.lock. Thư mục vendor chứa tất cả các dependencies, bao gồm cả bản thân Composer.

File composer.lock là 1 file rất hữu ích trong Composer. Công việc của nó là lock down các phiên bản của dependencies mà ta sử dụng. Nó giúp ta đảm bảo 1 project sẽ chạy đúng các phiên bản của các dependencies mà project đó yêu cầu. Nếu 1 tháng sau có 1 phiên bản 2.0.0 nào đấy của Monolog, và 1 người nào đó gõ lệnh composer install thì vẫn nhận được phiên bản 1.19.0 mà file composer.lock ghi rõ.

Tất nhiên nếu bạn muốn update các dependencies của mình vẫn được, chỉ cần sử dụng lệnh composer update. Nó sẽ tải về các phiên bản mới nhất và ghi đè vào file composer.lock.

Ở phần sau mình sẽ nói sâu hơn về Composer vì bài viết đến đây là dài rồi (nhiều bạn đọc đảm bảo dễ lười lắm :v). Hẹn gặp mọi người ở phần sau!

About the author

Võ Hoài Sơn

Tính tình bất định
Chọc vào là bịnh
Rất yêu lập trình
Luôn code hết mình
Mình hiện đang là sinh viên của trường ĐH Khoa học tự nhiên TPHCM. Bản thân rất thích code, kiêm luôn cả mần thơ nên thường hơi hâm hâm dở dở. Ngoài ra chém gió, chém chuối, chém trái cây các kiểu cũng là sở trường của mình. Rất mong được làm quen với các bạn :D

Add Comment