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

 
Kì vọng nào dành cho nền tảng iOS 6 sắp tới của Apple

Kì vọng nào dành cho nền tảng iOS 6 sắp tới của Apple

Dự kiến tại sự kiện WWDC diễn ra vào tuần tới, Apple sẽ chính thức giới thiệu đến người dùng phiên bản hệ điều hành iOS 6 mới nhất...

Google nâng cấp tính năng Product Search

Google nâng cấp tính năng Product Search

Mới đây, Google đã nâng cấp tính năng tìm kiếm sản phẩm Product Search để giúp người dùng có thể mua sắm một cách thông minh nhất.

Smartphone, Facebook

Nhăm nhe sản xuất smartphone - Facebook “khôn” hay dại?

Có vẻ như Facebook đã rất “máu” với cuộc chơi mới trên thị trường smartphone bằng cách tự mình thiết kế và sản xuất một mẫu điện thoại mang thương hiệu Facebook...

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

 

Diet con trung