Liên hệ
lập trình php tools

Sử dụng Composer trong lập trình PHP

Tìm hiểu Composer, cài đặt và sử dụng Composer để quản lý, cài đặt các thư viện trong lập trình PHP

Composer là gì?

Composer là một công cụ quản lý các Dependency trong PHP (bạn có thể hiểu là các thư viện) dùng vào dự án của bạn. 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. 

Vậy cụ thể Composer là các việc gì cho một dự án PHP của bạn?

Bạn có một dự án và dự án này dựa vào một số lượng các thư viện khác nhau, mỗi thư viện này có thể lại dựa vào một thư viện khác.

Nếu không có Composer thì sao: Bạn phải tìm tải thủ công từng thư viện, rồi các thư viện mà thư viện bạn dùng tham chiếu đến ..., bạn phải tự cấu hình để tất cả load vào dự án sao cho suôn sẻ. Rồi khi bạn cập nhật phiên bản mới của của thư viện cũng làm lại tương tự. Đây thực sự là một công việc mất nhiều thời gian và quản lý rất phức tạp ...

Lúc này với Composer, bạn chỉ việc khai báo sử dụng thư viện nào đó các việc còn lại từ cài đặt, tìm thư viện phụ thuộc ... Composer sẽ tự động làm cho bạn.

Cài đặt Composer trên Windows

Vì Composer hoạt động dựa trên PHP nên đảm bảo có một phiên bản PHP đã cài đặt trên máy (Ví dụ dã cài đặt Wampserver). Sau đó đơn giản tải Composer-Setup.exe và chạy. Để chạy các lệnh Composer mở giao diện dòng lệnh cmd và gõ Composer. Ví dụ để kiểm tra phiên bản của Composer:

C:\Users\username>composer -V

Khi chạy các lệnh Composer cho từng dự án, nên chyển đến folder chứa dự án để chạy.

Sử dụng Composer cơ bản trong dự án PHP

Các thư viện bạn cần composer tải về tìm ở ở https://packagist.org/. Muốn sử dụng cái nào vào đó tìm kiếm cho phù hợp, rồi dùng lệnh Composer thực hiện tại thư mục dự án để tải về, cập nhật ...

Cập nhật mới phiên bản Composer

composer self-update

Sử dụng Composer tải thư viện

Mỗi dự án PHP bạn cần tạo một file tên là composer.json đặt ở thư mục gốc dự án, trong đó khai báo các thư viện mà bạn dùng đến, rồi dùng lệnh composer update để cập nhật.

Ví dụ 1)

Giả sử bạn tạo một thư mục dự án PHP tên là vidu, trong đó bạn sẽ sử dụng thư viện Recipe (chứa một số hàm tiện ích cho PHP lặt vặt, nó phân phối trên packagist.org với tên vendor, thư viên là "ngfw/recipe" phiên bản hiện tại là 1.2).

Tạo file composer.json tại thư mục gốc của dự án và khai báo theo nội dung sau:

{
    "name": "myexample/vidu",
    "require": {
        "ngfw/recipe": "^1.2"
    }
}

Sau đó từ dòng lệnh chạy: composer update hoặc composer install . Kết quả là thư viện đã được tải và cài đặt cho bạn (xem thư viện trong folder vendor). Đồng thời nó phát sinh mã trong Autoload của vendor để bạn nạp vào dự án.

"ngfw/recipe": "^1.2"  => ngfw/recipe là thư viện dùng đến, "^1.2" là khai báo phiên bản của thư viện. Nếu cần dùng các thư viện khác khai báo dòng tiếp theo với cấu trúc tương tự.

Cách 2)

Khi đã biết tên thư viên (ngfw/recipe) chỉ cần gõ lệnh composer tại thư mục dự án: composer require tên-thư-viện.

composer require ngfw/recipe

Thì kết quả cũng tương tự. Nếu chưa có composer.json nó sẽ tự sinh, nếu có nó sẽ cập nhật khai báo thư viện mới. 

 

Trở lại ví dụ trên, Composer đã cập nhật thư viện cần dùng vào vendor và trong vendor bao giờ cũng có một file autoload.php (theo chuẩn PRS) là nơi bạn gộp nó vào dự án của bạn để sự dụng.

Ví dụ:

Tạo file index.php và sử dụng thư viện. Giả sử bạn cần dùng Recipe để đổi mã màu dạng hex sang RGB.

<?php
use ngfw\Recipe;
include '/vendor/autoload.php';


$hex = "#FFF";
$rgb = Recipe::hex2rgb($hex);

echo "Convert HEX to RGB : $hex => $rgb";

Như vậy bạn cần dùng autoload.php phát sinh bởi Composer để sử dụng cho dự án. Ở thời điểm bất kỳ bạn cần cập nhật lại autoload.php để load thêm các module ứng dụng của bạn sau chỉ chỉnh sửa composer.json hãy dùng lệnh:

composer dump-autoload

Composer và PSR-4 : Autoload

Xem thêm trong : PSR-4: Autoload

Để phát sinh code AutoLoad để nạp các thư viện của bạn vào dự án, nếu các thư viện của bạn xây dựng đúng theo chuẩn PSR - 4 thì bạn cần nạp bằng cách khai báo trong composer.json rồi dùng lệnh composer dum-autoload để cập nhật.

Khai báo như sau:

{
    "autoload": {
        "vendorname": { "": "thu-muc-code/" }
    }
}

Vui lòng đăng ký ủng hộ kênh