Composer Explained [PHP Indonesia Meetup]
-
Upload
taufan-aditya -
Category
Technology
-
view
1.163 -
download
1
description
Transcript of Composer Explained [PHP Indonesia Meetup]
7th PHPIndonesia Surabaya Meetup
Taufan Adhitya - Lead Dev @Mataharilabs28 September 2013 @UPN Surabaya
Explained
Apa yang akan kita diskusikan :
● Kenapa menggunakan Composer?
● Apa itu Composer?
Kenapa Menggunakan Composer?
Contoh “native” php
PHP secara “native” punya bakat menghasilkan “spaghetti code”
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
2005-2006 : Dimulainya era “PHP Framework”
Keuntungan menggunakan PHP Framework
● Organisasi kode.
● Mempromosikan standard.
● Mempromosikan reusabilitas kode.
Pilihan kita ketika perlu fitur tambahan yang tidak disediakan Framework
● Mengimport external library
● Menulis library sendiri
Setiap Framework punya repository khusus untuk “package”
● Symfony -> Bundle● CodeIgniter -> Spark● Zend Framework -> Modules● CakePHP -> Bakery
Penyedia external library lainnya :● PEAR● PHPClasses?
Di PHP, tidak mudah mengintegrasikan library satu dengan yang lain
Apa Itu Composer?
Perbandingan arsitektur “package” antar bahasa pemrograman
● Perl -> CPAN● Ruby -> Gem● Java -> Maven● Python -> pip● C#(.net) -> NuGet● Node.JS-> npm
● PHP -> Composer
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
Composer menggunakan SAT solver
● Semua package pertama-tama di kumpulkan dalam “pool”
● Depedency antar package diterjemahkan menjadi boolean.
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.
Menggunakan composer.json untuk mendefinisikan depedency
Composer-isasi project :)
Beberapa terminologi depedency dalam Composer
● Require● Require-dev● Provide● Replace● Conflict● Recommend● Suggest
Composer memiliki Sentral Repository
Composer juga support Decentralized/Private Repository (Satis)
Depending.in : Me-monitoring composer depedency
Peran lain Composer
● Memungkinkan kita me-reproduksi “environment” aplikasi yang sama di semua mesin yang kita pakai
● Memungkinkan kita melakukan automatisasi dalam lifecycle development
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
Composer Hook = Automate more!
● pre-install-cmd
● post-install-cmd
● pre-update-cmd
● post-update-cmd
● post-create-project-cmd
● … dan banyak lagi
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
Reuse! Automate! http://getcomposer.org!
Question Time!