Composer là một công cụ quản lý các Show
Nội dung chính
Lợi ích khi sử dụng ComposerNói chung là các dự án PHP ngày nay là không thể thiếu Composer, vì chúng thường sử dụng rất nhiều loại thự viện. Nếu cài đặt thư viện thủ công thật sự là ác mộng (tích hợp, cập nhật cực cừ mệt mỏi). Khi có Composer dùng thư viện nào chỉ việc khai báo hay gõ tích hợp, khi cập nhật thự viện nào đó, nó cũng tự động giúp bạn cập nhật luôn các thư viện khác mà thư viện cập nhật dùng tới. Cài đặt ComposerComposer được viết bằng # php -v PHP 5.6.25 (cli) (built: Aug 18 2016 11:39:15) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies Cài đặt Composer trên WindowsTải Composer-Setup.exe và chạy nó, thật đơn giản. Sau khi cài đặt, để gọi được lệnh Composer ở bất kỳ đâu (dù đứng ở thư mục nào) thì thêm vào hệ
thống Windows, giá trị Cài đặt Composer trên CentOS/RHEL/Ubuntu# sudo curl -sS https://getcomposer.org/installer | php # Để gọi được Composer ở bất kỳ đâu # mv composer.phar /usr/local/bin/composer Kiểm tra Composer và vài lệnh tổng quanTừ dòng lệnh #Kiểm tra phiên bản Composer # composer -v Composer version 1.8.0 2018-12-03 10:31:16 #Cập nhật Composer # composer -selfupdate #Xóa cache composer | xóa đi các thư viện tải sẵn trong cache, để bắt nó tải lại # composer clearcache #Tìm các gói thưu viện # composer search từ_tìm_kiếm Khi chạy các lệnh Composer cho từng dự án, bạn chạy trên dòng lệnh Sử dụng Composer cơ bản trong dự án PHPComposer cho một dự án mớiMọi thiết lập Composer cho dự án đều chứa trong file # Composer int
Sau lệnh này nó yêu cầu bạn nhập một số thông tin của dự án, hãy nhập thông tin của bạn vào Package name (<vendor>/<name>) [xt/xt]: xtlab/myproject01 Description []: Day la du an PHP Author [XTLAB <>, n to skip]: XUANTHULAB <> Minimum Stability []: beta Package Type (e.g. library, project, metapackage, composer-plugin) []: License []: Define your dependencies. Would you like to define your dependencies (require) interactively [yes]? no Would you like to define your dev dependencies (require-dev) interactively [yes]? no Do you confirm generation [yes]? y Sau khi nhập thông tin về dự án của bạn như trên xong, Composer đã sinh ra file { "name": "xtlab/myproject01", "description": "Day la du an PHP", "authors": [ { "name": "XUANTHULAB", "email": "" } ], "minimum-stability": "beta", "require": {} } Sau này, bạn các tùy biến, thiết lập, tích hợp thư viện trên dự án của bạn sẽ tự động cập nhật vào file này! Tích hợp thư viện vào dự án bằng ComposerTrước hết xác định xem dự án của bạn cần thư viện nào, tìm tại https://packagist.org/ Ví dụ, bạn muốn sử dụng thư viện monolog/monolog phiên bản mới nhất (thư viện lưu log thông dụng cho php), thì từ dòng lệnh gõ # composer require monolog/monolog
Sau lệnh này, Composer sẽ tải tất cả các thành phần để
dùng được thư viện Mở lại file { "require": { "monolog/monolog": "^1.24" } } Điều này cho biết, dự án bạn dùng thư viện nào, sau này bạn chia sẻ dự án (copy dự án đi cho khác) bạn không cần phải copy cả thư mục Ngoài cách gõ lệnh như trên, bạn cũng có thể viết thư viện cần dùng vào # composer update
Nó cũng sẽ kiểm tra và cài đặt tất cả các thư viện cần thiết nếu chưa có. Ví dụ, giờ bạn lại muốn dùng thêm thư viên filp/whoops, phiên bản 2.3.1 (thư viện chuyên hiện thị thông báo lỗi đẹp mắt - tiện dụng để debug). Thay vì cách gõ lệnh như trên, bạn sẽ chỉnh sửa { "require": { "monolog/monolog": "^1.24", "filp/whoops": "^2.3.1" } } Sau đó gõ lệnh Như trên đã nói, Ví dụ, sử dụng thư viện <php? include vendor/autoload.php'; use Monolog\Logger; use Monolog\Handler\StreamHandler; $log = new Logger('name'); $log->pushHandler(new StreamHandler('mylogfile.log', Logger::WARNING)); $log->warning('ghi log'); $log->error('ghi log abc'); Xóa thư viện khỏi dự ánNếu một thư viện nào đã tích hợp vào dự án ( Cách 1 - Gõ lệnh composer # composer remove vendor/package
Ví dụ, không muốn dùng đến # composer remove filp/whoops
Sau lệnh
này, nó sẽ xóa thư viện ra khỏi Cách 2 - Cập nhật composer.json Muốn loại bỏ thư viện nào, mở file # composer update
Composer và PSR-4 : AutoloadXem thêm trong : PSR-4: Autoload Như đã biết các thư viện hiện này, và code của bạn sau này được khuyến khích xây dựng sao cho đáp ứng
cơ chế tự động nạp theo chuẩn Tổ chức code của bạn (giống như các thư viện) được đặt tên truy cập được bằng Mỗi module dự án của bạn có một cái tên theo cấu trúc Sau đó, để đảm bảo Ví dụ cụ thể như sau: Xây dựng một lớp có tên <?php namespace MyCompany\Mymodule class FirstClass { function helloComposer() { } } Như trên là đã đúng chuẩn <?php $cls = new MyCompany\Mymodule\FirstClass(); Hoặc <?php use MyCompany\Mymodule; $cls = new FirstClass(); Để làm được điều đó, bạn hãy cho composer biết bạn có một module chuẩn tự động nạp PRS-4, bằng đoạn mã sau trong { "autoload": { "psr-4": { "MyCompany\\": "src/", } } } Điều đó có nghĩa là Khai báo # composer dum-autoload
Giờ thì Đưa thư viện lưu trên PackagistNếu bạn có một thư viện, muốn lưu trên https://packagist.org/, để mọi người có thể cài vào dự án của họ bằng Composer thì làm thế nào? Đây là các bước làm
Bây giờ thực hiện thử đăng một thư viện, các bước làm từ đầu. (1) Code PHP thư viện Ví dụ đơn giản này, sẽ tạo một thư viện có chức năng Convert chữ tiếng việt có dấu sang
dạng không dấu (Ví dụ Thư viện sẽ đặt tên như sau: chọn tên vendor là <?php namespace XuanthuLab\Tools; class Convert { public static $decomposed = ["à","á","ạ","ả","ã","â","ầ","ấ","ậ","ẩ","ẫ","ă", "ằ","ắ","ặ","ẳ","ẵ","è","é","ẹ","ẻ","ẽ","ê","ề" ,"ế","ệ","ể","ễ", "ì","í","ị","ỉ","ĩ", "ò","ó","ọ","ỏ","õ","ô","ồ","ố","ộ","ổ","ỗ","ơ" ,"ò","ớ","ợ","ở","õ", "ù","ú","ụ","ủ","ũ","ư","ừ","ứ","ự","ử","ữ", "ỳ","ý","ỵ","ỷ","ỹ", "đ", "À","À","Ạ","Ả","Ã","Â","Ầ","Ấ","Ậ","Ẩ","Ẫ","Ă" ,"Ằ","Ắ","Ặ","Ẳ","Ẵ", "È","É","Ẹ","Ẻ","Ẽ","Ê","Ề","Ế","Ệ","Ể","Ễ", "Ì","Í","Ị","Ỉ","Ĩ", "Ò","Ó","Ọ","Ỏ","Õ","Ô","Ồ","Ố","Ộ","Ổ","Ỗ","Ơ" ,"Ờ","Ớ","Ợ","Ở","Ỡ", "Ù","Ú","Ụ","Ủ","Ũ","Ư","Ừ","Ứ","Ự","Ử","Ữ", "Ỳ","Ý","Ỵ","Ỷ","Ỹ", "Đ"]; public static $precomposed = ["à","á","ạ","ả","ã","â","ầ","ấ","ậ","ẩ","ẫ","ă", "ằ","ắ","ặ","ẳ","ẵ","è","é","ẹ","ẻ","ẽ","ê","ề" ,"ế","ệ","ể","ễ", "ì","í","ị","ỉ","ĩ", "ò","ó","ọ","ỏ","õ","ô","ồ","ố","ộ","ổ","ỗ","ơ" ,"ờ","ớ","ợ","ở","ỡ", "ù","ú","ụ","ủ","ũ","ư","ừ","ứ","ự","ử","ữ", "ỳ","ý","ỵ","ỷ","ỹ", "đ", "À","Á","Ạ","Ả","Ã","Â","Ầ","Ấ","Ậ","Ẩ","Ẫ","Ă" ,"Ằ","Ắ","Ặ","Ẳ","Ẵ", "È","É","Ẹ","Ẻ","Ẽ","Ê","Ề","Ế","Ệ","Ể","Ễ", "Ì","Í","Ị","Ỉ","Ĩ", "Ò","Ó","Ọ","Ỏ","Õ","Ô","Ồ","Ố","Ộ","Ổ","Ỗ","Ơ" ,"Ờ","Ớ","Ợ","Ở","Ỡ", "Ù","Ú","Ụ","Ủ","Ũ","Ư","Ừ","Ứ","Ự","Ử","Ữ", "Ỳ","Ý","Ỵ","Ỷ","Ỹ", "Đ"]; public static $latin = ["a","a","a","a","a","a","a","a","a","a","a" ,"a","a","a","a","a","a", "e","e","e","e","e","e","e","e","e","e","e", "i","i","i","i","i", "o","o","o","o","o","o","o","o","o","o","o","o" ,"o","o","o","o","o", "u","u","u","u","u","u","u","u","u","u","u", "y","y","y","y","y", "d", "a","a","a","a","a","a","a","a","a","a","a","a" ,"a","a","a","a","a", "e","e","e","e","e","e","e","e","e","e","e", "i","i","i","i","i", "o","o","o","o","o","o","o","o","o","o","o","o" ,"o","o","o","o","o", "u","u","u","u","u","u","u","u","u","u","u", "y","y","y","y","y", "d"]; public static function convertLatin($str) { $str = str_replace(self::$decomposed, self::$latin, str_replace(self::$precomposed, self::$latin, $str)); return mb_strtolower($str); } } (2) Cấu hình Composer Chạy lệnh khởi tạo composer và nhập các thông tin cần thiết để có được file composer.json # Composer int
Giả sử thư viện này yêu cầu cài đặt một
thư viện khác ví dụ # composer require monolog/monolog
Mở "autoload": { "psr-4": { "XuanthuLab\\": "src/" } } File composer cuối cùng như sau { "name": "xuanthulabnet/latinurl", "description": "Convert VietNam Url", "authors": [ { "name": "XTLAB", "email": "" } ], "require": { "monolog/monolog": "^1.24" }, "autoload": { "psr-4": { "XuanthuLab\\": "src/" } } } (3) Tạo một Repo GitHub để lưu code dự án Đơn giản, bạn đăng ký một tài khoản GitHub, tạo ra một Repo để lưu code. Mình đã tạo một Repo trên GitHub https://github.com/xuanthulabnet/latinurl để lưu dự án này. và địa chỉ git là Sử dụng GitHub như thế nào, làm thế nào để truy cập GitHub từ SSH hãy tham khảo tại: SỬ DỤNG GITHUB (4) Tạo Git Local Repo cho dự án và push lên GitHub (Bạn cần biết Sử dụng Git trước) Thực hiện các lệnh git sau từ # Khởi tạo Local Repo # git init # Chuẩn bị commit # git add . # git add -A # Thực hiện commit # git commit -m'Init' # Tạo 1 tag, đánh dấu phiên bản (Ví dụ V1.0.0) # git tag v1.0.0 # Thêm remote vào local # git remote add origin :xuanthulabnet/latinurl.git # Push tất cả lên GitHub # git push --all # git push --tag Đến đây, tất cả code đã được chuyển lưu trên GitHub ở địa chỉ (5) Submit vào Packagist Bạn đăng nhập vào Packagist, sau đó bấm vào Submit Dán địa chỉ GitHub của dự án Dự án trên sau khi submit, đã có tại địa chỉ xuanthulabnet/latinurl Giờ muốn tích hợp vào dự án bất kỳ, chỉ việc gõ: # composer require xuanthulabnet/latinurl
Bạn hãy thử kiểm tra xem thư viện trên tải về như thế nào, nó sẽ nằm trong Chúc thành công! |