Composer Explained [PHP Indonesia Meetup]

27
7th PHPIndonesia Surabaya Meetup Taufan Adhitya - Lead Dev @Mataharilabs 28 September 2013 @UPN Surabaya Explained

description

 

Transcript of Composer Explained [PHP Indonesia Meetup]

Page 1: Composer Explained [PHP Indonesia Meetup]

7th PHPIndonesia Surabaya Meetup

Taufan Adhitya - Lead Dev @Mataharilabs28 September 2013 @UPN Surabaya

Explained

Page 2: Composer Explained [PHP Indonesia Meetup]

Apa yang akan kita diskusikan :

● Kenapa menggunakan Composer?

● Apa itu Composer?

Page 3: Composer Explained [PHP Indonesia Meetup]

Kenapa Menggunakan Composer?

Page 4: Composer Explained [PHP Indonesia Meetup]

Contoh “native” php

Page 5: Composer Explained [PHP Indonesia Meetup]

PHP secara “native” punya bakat menghasilkan “spaghetti code”

Page 6: Composer Explained [PHP Indonesia Meetup]

Masalah utama pada “spaghetti code”

● Tidak ada modularitas. ● Kurangnya peng-organisasi-an kode● Tidak ada pembagian antara fungsi dan

tujuan.● Tidak memungkinan penggunaan ulang

(mengandalkan Copy-Pasta!).● Sulit untuk di-verifikasi

Page 7: Composer Explained [PHP Indonesia Meetup]

2005-2006 : Dimulainya era “PHP Framework”

Page 8: Composer Explained [PHP Indonesia Meetup]

Keuntungan menggunakan PHP Framework

● Organisasi kode.

● Mempromosikan standard.

● Mempromosikan reusabilitas kode.

Page 9: Composer Explained [PHP Indonesia Meetup]

Pilihan kita ketika perlu fitur tambahan yang tidak disediakan Framework

● Mengimport external library

● Menulis library sendiri

Page 10: Composer Explained [PHP Indonesia Meetup]

Setiap Framework punya repository khusus untuk “package”

● Symfony -> Bundle● CodeIgniter -> Spark● Zend Framework -> Modules● CakePHP -> Bakery

Penyedia external library lainnya :● PEAR● PHPClasses?

Page 11: Composer Explained [PHP Indonesia Meetup]

Di PHP, tidak mudah mengintegrasikan library satu dengan yang lain

Page 12: Composer Explained [PHP Indonesia Meetup]

Apa Itu Composer?

Page 13: Composer Explained [PHP Indonesia Meetup]

Perbandingan arsitektur “package” antar bahasa pemrograman

● Perl -> CPAN● Ruby -> Gem● Java -> Maven● Python -> pip● C#(.net) -> NuGet● Node.JS-> npm

● PHP -> Composer

Page 14: Composer Explained [PHP Indonesia Meetup]

Composer adalah Depedency Manager untuk PHP

● Composer bisa menginstall package yang dibutuhkan

● Composer bisa mengupdate package yang memiliki release terbaru

● Composer bisa menghapus package yang sudah tidak diperlukan

Page 15: Composer Explained [PHP Indonesia Meetup]

Composer menggunakan SAT solver

● Semua package pertama-tama di kumpulkan dalam “pool”

● Depedency antar package diterjemahkan menjadi boolean.

Page 16: Composer Explained [PHP Indonesia Meetup]

Depedency resolusi dengan SAT solver

● Install B (versi 1 atau 2) -> (B1|B2)● A require B (versi 1 atau 2) -> (-A|B1|B2)● A conflict B (versi 1 atau 2)-> (-A|-B1), (-A|-B2)● C dan D provide E -> (-E|C|D)● B2 update B1 -> (-B1|-B2)

Contoh kasus : (-A|B1|B2) (-B2|C) (A) (-B1|-B2) (-A|-C)

SAT solver akan mengevaluasi boolean untuk A, B1, B2 dan C sehingga semua kondisi menjadi TRUE. Jika nilai akhirnya TRUE, dia akan diinstall.

Page 17: Composer Explained [PHP Indonesia Meetup]

Menggunakan composer.json untuk mendefinisikan depedency

Page 18: Composer Explained [PHP Indonesia Meetup]

Composer-isasi project :)

Page 19: Composer Explained [PHP Indonesia Meetup]

Beberapa terminologi depedency dalam Composer

● Require● Require-dev● Provide● Replace● Conflict● Recommend● Suggest

Page 20: Composer Explained [PHP Indonesia Meetup]

Composer memiliki Sentral Repository

Page 21: Composer Explained [PHP Indonesia Meetup]

Composer juga support Decentralized/Private Repository (Satis)

Page 22: Composer Explained [PHP Indonesia Meetup]

Depending.in : Me-monitoring composer depedency

Page 23: Composer Explained [PHP Indonesia Meetup]

Peran lain Composer

● Memungkinkan kita me-reproduksi “environment” aplikasi yang sama di semua mesin yang kita pakai

● Memungkinkan kita melakukan automatisasi dalam lifecycle development

Page 24: Composer Explained [PHP Indonesia Meetup]

composer.lock = Tidak ada lagi coding drama!

● Semua developer dalam team bekerja dengan versi package yang sama.

● Semua mesin (target deploy) menggunakan versi package yang sama.

● Tidak ada developer yang menggunakan versi yang belum kita verifikasi

Page 25: Composer Explained [PHP Indonesia Meetup]

Composer Hook = Automate more!

● pre-install-cmd

● post-install-cmd

● pre-update-cmd

● post-update-cmd

● post-create-project-cmd

● … dan banyak lagi

Page 26: Composer Explained [PHP Indonesia Meetup]

Statistik seputar Composer

● 7 release (sejak 2011)● 244 contributor● 16.586 packages yang tersedia di packagist● 55.071 versi yang tersedia di packagist● 68.718 940 total instalasi package di

packagist

Page 27: Composer Explained [PHP Indonesia Meetup]

Reuse! Automate! http://getcomposer.org!

Question Time!