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

 
Cách xây dựng link liên kết hiệu quả cho seo

Cách xây dựng link liên kết hiệu quả cho seo

Xây dựng links là yếu tố quan trọng nhất trong cạnh tranh thứ hạng trên Google. Có nhiều phương pháp xây dựng links khác nhau

dien thoai di dong

Sử dụng chung di động có thể lây lan bệnh truyền nhiễm

ĐTDĐ có lượng vi khuẩn lớn gấp 10 lần so với một chiếc toilet, vì vậy không có gì ngạc nhiên khi một người đàn ông Uganda đã chết vì nhiễm vi khuẩn Ebola sau khi ăn cắp một chiếc ĐTDĐ từ phòng cách li của bệnh viện tại địa phương nơi đã bùng phát dịch bệnh do khuẩn Ebola.

Ronaldinho, Ronaldo, Adriano, Robinho và Pato tất cả đều nghiện sex

Ronaldinho, Ronaldo de Lima, Adriano, Robinho và Pato là những tài năng sáng giá nhất ở Brazil trong thời của họ. Tuy nhiên, những "vũ công Samba" này lại không thể giữ đôi chân trên mặt đất khi họ đang ở đỉnh cao của sự nghiệp.

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

 

Diet con trung