Cách cài đặt và sử dụng Composer trên Debian 8
Composer là một công cụ quản lý phụ thuộc phổ biến cho PHP, được tạo ra chủ yếu để tạo điều kiện thuận lợi cho việc cài đặt và cập nhật cho các phụ thuộc của dự án. Nó sẽ kiểm tra các gói khác mà một dự án cụ thể phụ thuộc vào và cài đặt chúng cho bạn, sử dụng các version phù hợp theo yêu cầu của dự án.Hướng dẫn này sẽ chỉ ra cách cài đặt và bắt đầu với Composer trên server Debian 8.
Yêu cầu
Đối với hướng dẫn này, bạn cần :
- Một server Debian 8 với user sudo không phải root, như trong Cài đặt server ban đầu với Debian 8
Bước 1 - Cài đặt Phụ thuộc
Trước khi ta download và cài đặt Composer, ta cần đảm bảo server của ta đã cài đặt tất cả các phần phụ thuộc cần thiết.
Đầu tiên, hãy cập nhật bộ nhớ cache của trình quản lý gói.
- sudo apt-get update 
Bây giờ, hãy cài đặt các phụ thuộc.  Ta   cần  curl để  download  Composer và php5-cli , một gói PHP, để cài đặt và chạy nó. Composer sử dụng git , một hệ thống kiểm soát version , để  download  các phụ thuộc của dự án. Bạn có thể cài đặt tất cả ba gói này cùng một lúc bằng lệnh này:
- sudo apt-get install curl php5-cli git 
Bây giờ các phụ thuộc cần thiết đã được cài đặt, hãy tiến hành và cài đặt chính Composer.
Bước 2 - Download và cài đặt composer
  Ta  sẽ làm theo các hướng dẫn như được viết trong tài liệu chính thức của Composer với một sửa đổi nhỏ để cài đặt Composer  trên phạm vi global  theo /usr/local/bin . Điều này sẽ cho phép mọi  user  trên  server  sử dụng Composer.
  Download  trình cài đặt vào /tmp .
- php -r "copy('https://getcomposer.org/installer', '/tmp/composer-setup.php');" 
Truy cập trang pubkey và chữ ký của Composer và sao chép chuỗi SHA-384 ở trên cùng. Sau đó, chạy lệnh sau bằng cách thay thế sha_384_string bằng chuỗi bạn đã sao chép.
- php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === 'sha_384_string') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('/tmp/composer-setup.php'); } echo PHP_EOL;" 
Lệnh này kiểm tra hàm băm của file bạn đã download với hàm băm chính xác từ trang web của Composer. Nếu khớp, nó sẽ in Trình cài đặt được xác minh . Nếu không khớp, nó sẽ in Installer bị hỏng , trong trường hợp đó, bạn nên kiểm tra lại xem bạn đã sao chép đúng chuỗi SHA-384 chưa.
 Tiếp theo,  ta  sẽ cài đặt Composer. Để cài đặt nó  trên phạm vi global  trong /usr/local/bin ,  ta  sẽ sử dụng cờ --install-dir ; --filename cho trình cài đặt biết tên của file  thực thi của Composer. Đây là cách thực hiện việc này trong một lệnh:
- sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer 
Bạn sẽ thấy một thông báo như sau:
OutputAll settings correct for using Composer Downloading...  Composer (version 1.3.2) successfully installed to: /usr/local/bin/composer Use it: php /usr/local/bin/composer Bạn có thể xác minh Composer đã được cài đặt chính xác bằng cách kiểm tra version của nó.
- composer --version 
Bạn sẽ thấy version đã được cài đặt. Tại thời điểm viết bài này, version là:
Composer version 1.3.2 2017-01-27 18:23:41 Cuối cùng, bạn có thể gỡ bỏ tập lệnh trình cài đặt một cách an toàn khi bạn không cần nó nữa.
- rm /tmp/composer-setup.php 
Composer hiện đã được  cài đặt  và chạy, đang chờ dự án của bạn sử dụng. Trong phần tiếp theo, bạn sẽ tạo file  composer.json , bao gồm các thư viện PHP mà dự án của bạn phụ thuộc vào.
Bước 3 - Tạo file composer.json
 Để sử dụng Composer cho một dự án, bạn  cần  file  composer.json . Tệp composer.json cho Composer biết phụ thuộc nào mà nó cần  download  cho dự án của bạn và version  nào của mỗi gói được phép cài đặt. Điều này rất quan trọng để giữ cho dự án của bạn nhất quán và tránh cài đặt các version  không ổn định có thể gây ra sự cố tương thích ngược.
 Bạn không cần phải tạo file  này theo cách thủ công; rất dễ gặp lỗi cú pháp nếu bạn làm vậy. Composer tự động tạo ra các composer.json  file  khi bạn thêm một phụ thuộc vào dự án của bạn bằng cách sử dụng require lệnh. Các phần phụ thuộc bổ sung cũng có thể được thêm theo cách tương tự mà không cần phải chỉnh sửa file  này theo cách thủ công.
Quá trình sử dụng Composer để cài đặt một gói phụ thuộc trong một dự án thường bao gồm các bước sau:
- Xác định loại thư viện mà ứng dụng cần
- Nghiên cứu một thư viện open-souce phù hợp trên Packagist.org , repository chính thức cho Composer
- Chọn gói bạn muốn phụ thuộc vào
-  Run composer requirebao gồm phần phụ thuộc trong filecomposer.jsonvà cài đặt gói
Ta sẽ xem điều này hoạt động như thế nào trong thực tế với một ứng dụng demo đơn giản.
Mục tiêu của ứng dụng này là chuyển một câu đã cho thành một slug , là một chuỗi thân thiện với URL. Điều này được sử dụng để chuyển đổi tiêu đề trang thành đường dẫn URL (như phần cuối cùng của URL cho hướng dẫn này).
Hãy bắt đầu bằng cách tạo một folder cho dự án. Ta sẽ gọi nó là slugify :
- cd ~ 
- mkdir slugify 
- cd slugify 
Tiếp theo, hãy tìm kiếm thư viện mà ta cần sử dụng.
Tìm kiếm các Gói hàng trên Packagist
Tiếp theo, ta sẽ tìm kiếm Packagist cho một gói để giúp tạo slug . Nếu bạn tìm kiếm “slug”, bạn sẽ thấy một danh sách các gói. Ở bên phải của mỗi gói trong danh sách, bạn sẽ thấy hai con số: số trên cùng là số lần gói được cài đặt và số ở dưới cùng cho biết số lần một gói được gắn dấu sao trên GitHub.
Nói chung, các gói có nhiều bản cài đặt và số sao có xu hướng ổn định hơn vì nhiều người đang sử dụng chúng. Việc kiểm tra mô tả gói cũng rất quan trọng đảm bảo gói thực sự là thứ bạn đang tìm kiếm.
 Những gì  ta  cần là một công cụ chuyển đổi  string-to-slug  đơn giản. Ví dụ ở đây,  ta  sẽ sử dụng gói cocur/slugify . Nó có vẻ là một trận đấu tốt vì nó có một số lượng cài đặt hợp lý và các ngôi sao.
 Bạn sẽ nhận thấy rằng các gói trên Packagist có tên nhà cung cấp và tên gói. Mỗi gói có một định danh duy nhất (một không gian tên) ở cùng một định dạng mà GitHub sử dụng cho các kho của nó: vendor/package . Thư viện  ta  muốn cài đặt sử dụng không gian tên cocur/slugify . Không gian tên là những gì  ta  cần để yêu cầu gói trong dự án của  ta .
 Bây giờ  ta  đã xác định được thư viện mình muốn, hãy thêm nó vào file  composer.json .
Yêu cầu một gói
  Ta  có thể chạy trình composer require bao gồm thư viện làm phụ thuộc và cũng tạo file  composer.json cho dự án:
- composer require cocur/slugify 
OutputUsing version ^2.3 for cocur/slugify ./composer.json has been created Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 1 install, 0 updates, 0 removals   - Installing cocur/slugify (v2.3) Downloading: 100%          Writing lock file Generating autoload files  Như bạn thấy  từ  kết quả , Composer tự động quyết định version  của gói nên được sử dụng. Nếu bạn kiểm tra folder  của dự án ngay bây giờ, nó sẽ chứa hai file  mới: composer.json và composer.lock , và một vendor/ folder :
- ls -l 
Outputtotal 12 -rw-r--r-- 1 sammy sammy   59 Feb  1 13:43 composer.json -rw-r--r-- 1 sammy sammy 2896 Feb  1 13:43 composer.lock drwxr-xr-x 4 sammy sammy 4096 Feb  1 13:43 vendor Tệp composer.lock được sử dụng để lưu trữ thông tin về version  nào của mỗi gói được cài đặt và  đảm bảo  các version  tương tự được sử dụng nếu ai đó sao chép dự án của bạn và cài đặt các phần phụ thuộc của nó. Nhà vendor/ folder  là nơi chứa các phụ thuộc của dự án. Nhà vendor/ folder  không được  commit  kiểm soát version ; bạn chỉ cần bao gồm các composer.json và composer.lock  file .
 Lưu ý: Khi cài đặt một dự án đã chứa file  composer.json , bạn cần chạy composer install để  download  các phụ thuộc của dự án.
 Bạn có thể nhận thấy rằng file  composer.lock bao gồm thông tin cụ thể về version  của các thư viện PHP mà dự án của  ta  phụ thuộc vào. Composer sử dụng một cú pháp đặc biệt để hạn chế các thư viện trong các version  cụ thể. Hãy xem nó hoạt động như thế nào.
Hiểu các ràng buộc về version
 Nếu bạn kiểm tra nội dung của file  composer.json  của bạn , bạn sẽ thấy  thông tin như  sau:
- cat composer.json 
{     "require": {         "cocur/slugify": "^2.3"     } } Có một dấu mũ, ^ , trước số version . Composer hỗ trợ một số ràng buộc và định dạng khác nhau để xác định version  gói yêu cầu, nhằm cung cấp tính linh hoạt trong khi vẫn giữ cho dự án của bạn ổn định. Toán tử dấu mũ được sử dụng bởi file  composer.json được tạo tự động là toán tử  được khuyến khích  để có khả năng tương tác tối đa, sau khi lập version  ngữ nghĩa. Trong trường hợp này, nó xác định 1.3 là version  tương thích tối thiểu và cho phép cập nhật lên bất kỳ version  nào trong tương lai dưới 2.0 . Bạn có thể đọc thêm thông tin về cơ sở lý luận của các version  trong tài liệu lập version  của Composer .
  Lúc này,   ta  đã thấy cách thêm và hạn chế các thư viện PHP mà dự án của  ta  cần với Composer bằng cách sử dụng file  composer.json . Bước tiếp theo là thực sự sử dụng các thư viện này bên trong ứng dụng của  ta . Với mục đích đó, Composer cung cấp file  autoload.php để hỗ trợ quá trình tải các thư viện bên ngoài.
Bước 4 - Bao gồm Tập lệnh Tự động tải
 Composer cung cấp một script tự động tải mà bạn có thể đưa vào dự án  của bạn  để tự động tải miễn phí. Điều này làm cho việc làm việc với các phụ thuộc và xác định không gian tên  của bạn  dễ dàng hơn nhiều. Điều duy nhất bạn cần làm là đưa file  vendor/autoload.php vào các tập lệnh PHP của bạn trước khi khởi tạo bất kỳ lớp nào.
 Hãy quay lại ứng dụng ví dụ slugify . Sử dụng nano hoặc editor  yêu thích của bạn, tạo tập lệnh test.php nơi  ta  sẽ sử dụng thư viện cocur/slugify .
- nano test.php 
<?php require __DIR__ . '/vendor/autoload.php';  use Cocur\Slugify\Slugify;  $slugify = new Slugify();  echo $slugify->slugify('Hello World, this is a long sentence and I need to make a slug from it!'); Bạn có thể chạy tập lệnh trong dòng lệnh với:
- php test.php 
Điều này sẽ tạo ra kết quả :
Outputhello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it Bạn đã cài đặt đầy đủ Composer, nhưng hãy đọc để tìm hiểu cách duy trì cài đặt.
Bước 5 - Cập nhật Composer và Phụ thuộc Dự án (Tùy chọn)
 Để tự cập nhật Composer, bạn có thể sử dụng lệnh tích hợp self-update mà nó cung cấp. Vì Composer được cài đặt  trên phạm vi global  nên bạn cần chạy lệnh với quyền root.
- sudo -H composer self-update 
Bạn có thể cập nhật một hoặc nhiều thư viện cụ thể bằng cách liệt kê chúng cụ thể với composer update .
- composer update namespace/package 
Nếu bạn muốn cập nhật tất cả các phụ thuộc dự án  của bạn , hãy chạy lệnh update .
- composer update 
Điều này sẽ kiểm tra các version  mới hơn của các thư viện mà bạn yêu cầu trong dự án  của bạn . Nếu tìm thấy version  mới hơn và nó tương thích với giới hạn version  được xác định trong file  composer.json , version  đó sẽ thay thế version  đã cài đặt trước đó. Tệp composer.lock sẽ được cập nhật  để áp dụng thay đổi  này.
Kết luận
Composer là một công cụ mạnh mẽ mà mọi nhà phát triển PHP nên có trong vành đai tiện ích của họ. Ngoài việc cung cấp một cách dễ dàng và tin cậy để quản lý các phụ thuộc của dự án, nó còn cài đặt một tiêu chuẩn thực tế mới để chia sẻ và khám phá các gói PHP do cộng đồng tạo ra.
Trong hướng dẫn này, ta đã mô tả ngắn gọn những điều cơ bản về Composer: cách cài đặt nó, cách tạo một dự án và tìm các gói cho nó cũng như cách duy trì nó. Để tìm hiểu thêm, bạn có thể khám phá tài liệu chính thức của Composer .
Các tin liên quan
 

