Composer là gì? Package Management cho PHP Project

Composer là gì? Package Management cho PHP Project

Composer giúp ta quản lý các lib bên ngoài nâng cấp, uninstall... Tương tự như npm của Node.js hay Sublime Packages của Sublime Text 2.

Composer là gì? Package Management cho PHP Project

Trước khi cài thì bạn nên cài qua git, php trong command line.
Hướng dẫn cài git tại đây: http://msysgit.github.com/

Thực hành:

1) Tạo example project (test_composer).
2) Download composer:

php -r "eval('?>'.file_get_contents('http://getcomposer.org/installer'));"

3) Tạo file composer.json có nội dung như sau: (cấu trúc là: vendorname/projectname: version)

{
	"require": {
		"monolog/monolog": "1.0.*"
	}
}

4) Install monolog:

php composer.phar install

5) Sau khi install thì composer sẽ tạo thư mục vendor và download project monolog vào trong thư mục vendor.
6) Composer sẽ tạo file composer.lock. Lần sau khi install nếu composer thấy file này sẽ install dựa vào file này, nếu không có file này sẽ install dựa vào composer.json. Điều đó có nghĩa: nếu muốn change json thì ta phải dùng lệnh update để update vào composer.lock

php composer.phar update

7) Để dùng composer thì chỉ việc require:

require 'vendor/autoload.php'; 

8) Run file /index.php có nội dung như sau, nếu tạo file app.log thì ta đã thành công:

 <?php
require 'vendor/autoload.php';
$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->addWarning('Foo');

9) Để load thư viện riêng của ta thì ta làm như sau:

+ Khai bào thư mục Acme, Cata trong file composer.json

{
"require": {
    "monolog/monolog": "1.0.*"
},
    "autoload": {
        "psr-0": {
            "Acme": "src/",
            "Cata": "src1/"
        }
    }
}

+ Tạo file Foo.php trong /src/Acme/Foo.php và /src1/Cata/Mala/Foo.php có nội dung như sau:

 <?php // Acme
namespace Acme;
class Foo {
    function __construct () {
        echo 'Khoi tao Acme!';
    }
}

 <?php // Cata\Mala
namespace Cata\Mala;
class Foo {
    function __construct () {
        echo 'Khoi tao class Cata Mala!';
    }
}

+ Update lock file:

php composer.phar update

+ Run file test2.php có nội dung sau:

 <?php
require 'vendor/autoload.php';
new Acme\Foo();

+ Nếu hiện ra "Khoi tao Acme!" là ta đã thực hiện thành công việc autoload cho Acme.

+ Cuối cùng run file index3.php có nội dung sau:

 <?php
require 'vendor/autoload.php';
new Cata\Mala\Foo();

+ Nếu hiện ra "Khoi tao class Cata Mala!!" là ta đã thực hiện thành công việc autoload cho Cata Mala.

+ Ghi chú: Nếu bị lỗi 'fatal error - namespace must be the first statement in the script' là do file được encode không bằng Bom khi dùng Notepad++. Để Fix chỉ việc mở notepad++ -> Encoding in utf-9 withor BOM.

Bạn thấy bài viết này như thế nào?: 
Average: 10 (1 vote)
Ảnh của Khanh Hoang

Khanh Hoang - Kenn

Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
7 hướng dẫn IBM giúp tổ chức và doanh nghiệp đối phó với thảm họa

7 hướng dẫn IBM giúp tổ chức và doanh nghiệp đối phó với thảm họa

Chuẩn bị môi trường công nghệ thông tin (CNTT) sẵn sàng với những thảm họa tự nhiên và nhiều nguy cơ khác có thể xảy đến.

Startup công nghệ tỉ đô đầu tiên của châu Phi lên sàn chứng khoán New York

Startup công nghệ tỉ đô đầu tiên của châu Phi lên sàn chứng khoán New York

Theo CNBC, cổ phiếu Jumia Technologies tăng đến hơn 60% trong ngày đầu giao dịch trên Sàn Giao dịch Chứng khoán New York. Giữa ngày giao dịch (giờ Mỹ) cổ phiếu có giá tầm 22 USD, cao hơn mức mở cửa 14,5 USD. Vốn hóa thị trường của Jumia hơn 1 tỉ USD một chút.

Ngày 4/2: Phát minh ra khóa dán, bút chì và Facebook

Ngày 4/2: Phát minh ra khóa dán, bút chì và Facebook

Năm 1978, kỹ sư người Thụy Sĩ, Georges de Mestral đã phát minh ra loại khóa dán (hay còn gọi là khóa Velcro)

Công ty diệt chuột T&C

 

Diet con trung