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

 
Scala

Web framework và web server Xitrum cho Scala do người Việt viết

Xitrum vừa là web framework vừa là web server mã nguồn mở theo phong cách hiện đại viết bằng Scala, cho Scala, có những tính năng nổi bật sau:

How to Unlock Bootloader of Sony Xperia Play, Neo, Arc, Pro Officially

How to Unlock Bootloader of Sony Xperia Play, Neo, Arc, Pro Officially

 The website will help you to how official instructions on how Unlock Bootloader of Sony Xperia Play, Arc, Pro, Neo Officially. 

Nữ tiến sĩ xinh đẹp tuyển người yêu về ăn Tết

Nữ tiến sĩ xinh đẹp tuyển người yêu về ăn Tết

Học thức cao lại có ngoại hình ưa nhìn, ăn mặc đẹp, thế nhưng vẫn có rất nhiều người ‘chê’ mỹ nữ tiến sĩ.

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

 

Diet con trung