SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
7th PHPIndonesia Surabaya Meetup
Taufan Adhitya - Lead Dev @Mataharilabs
28 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!

Contenu connexe

Similaire à Composer Explained [PHP Indonesia Meetup]

Pertemuan 1 Pengenalan CodeBlocks (CB)
Pertemuan 1 Pengenalan CodeBlocks (CB)Pertemuan 1 Pengenalan CodeBlocks (CB)
Pertemuan 1 Pengenalan CodeBlocks (CB)Endang Retnoningsih
 
Dasar pemrograman vb.net (1)
Dasar pemrograman vb.net (1)Dasar pemrograman vb.net (1)
Dasar pemrograman vb.net (1)Henry Littleboy
 
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010eddie Ismantoe
 
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)riarel
 
Dicoding Developer Coaching #120_ DevOps Engineer _ Pengembangan Aplikasi men...
Dicoding Developer Coaching #120_ DevOps Engineer _ Pengembangan Aplikasi men...Dicoding Developer Coaching #120_ DevOps Engineer _ Pengembangan Aplikasi men...
Dicoding Developer Coaching #120_ DevOps Engineer _ Pengembangan Aplikasi men...shabilla6
 
Algoritma dan Pemrograman C++ (Program Structure)
Algoritma dan Pemrograman C++ (Program Structure)Algoritma dan Pemrograman C++ (Program Structure)
Algoritma dan Pemrograman C++ (Program Structure)Nabil Muhammad Firdaus
 
Belajar framework code igniter xii rpl
Belajar framework code igniter xii rplBelajar framework code igniter xii rpl
Belajar framework code igniter xii rplDenny Yahya
 
Pertemuan 6 Mikroprosessor dan Mikrokontroler
Pertemuan 6 Mikroprosessor dan MikrokontrolerPertemuan 6 Mikroprosessor dan Mikrokontroler
Pertemuan 6 Mikroprosessor dan MikrokontrolerAhmad Nawawi, S.Kom
 
Code Generatorx
Code GeneratorxCode Generatorx
Code Generatorxvalcon24
 
Pertemuan 1 Pengenalan Code Blocks
Pertemuan 1 Pengenalan Code BlocksPertemuan 1 Pengenalan Code Blocks
Pertemuan 1 Pengenalan Code BlocksEndang Retnoningsih
 
Kubernetes Fundamentals.pptx
Kubernetes Fundamentals.pptxKubernetes Fundamentals.pptx
Kubernetes Fundamentals.pptxannonymoushacker2
 

Similaire à Composer Explained [PHP Indonesia Meetup] (20)

Pertemuan 1 Pengenalan CodeBlocks (CB)
Pertemuan 1 Pengenalan CodeBlocks (CB)Pertemuan 1 Pengenalan CodeBlocks (CB)
Pertemuan 1 Pengenalan CodeBlocks (CB)
 
Dasar pemrograman vb.net (1)
Dasar pemrograman vb.net (1)Dasar pemrograman vb.net (1)
Dasar pemrograman vb.net (1)
 
Tutorial VB.Net
Tutorial VB.NetTutorial VB.Net
Tutorial VB.Net
 
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
 
Besut Kode - Workshop 2
Besut Kode - Workshop 2Besut Kode - Workshop 2
Besut Kode - Workshop 2
 
Tugas rekweb 4
Tugas rekweb 4Tugas rekweb 4
Tugas rekweb 4
 
Pemrograman dasar
Pemrograman dasarPemrograman dasar
Pemrograman dasar
 
201012101edit
201012101edit201012101edit
201012101edit
 
Pengenalan Algoritma Komputer
Pengenalan Algoritma KomputerPengenalan Algoritma Komputer
Pengenalan Algoritma Komputer
 
Clean Code - Clean Comments
Clean Code - Clean CommentsClean Code - Clean Comments
Clean Code - Clean Comments
 
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
 
Dicoding Developer Coaching #120_ DevOps Engineer _ Pengembangan Aplikasi men...
Dicoding Developer Coaching #120_ DevOps Engineer _ Pengembangan Aplikasi men...Dicoding Developer Coaching #120_ DevOps Engineer _ Pengembangan Aplikasi men...
Dicoding Developer Coaching #120_ DevOps Engineer _ Pengembangan Aplikasi men...
 
Algoritma dan Pemrograman C++ (Program Structure)
Algoritma dan Pemrograman C++ (Program Structure)Algoritma dan Pemrograman C++ (Program Structure)
Algoritma dan Pemrograman C++ (Program Structure)
 
Belajar framework code igniter xii rpl
Belajar framework code igniter xii rplBelajar framework code igniter xii rpl
Belajar framework code igniter xii rpl
 
Pertemuan 6 Mikroprosessor dan Mikrokontroler
Pertemuan 6 Mikroprosessor dan MikrokontrolerPertemuan 6 Mikroprosessor dan Mikrokontroler
Pertemuan 6 Mikroprosessor dan Mikrokontroler
 
Bahasa Pemrograman
Bahasa PemrogramanBahasa Pemrograman
Bahasa Pemrograman
 
Code Generatorx
Code GeneratorxCode Generatorx
Code Generatorx
 
Pertemuan 1 Pengenalan Code Blocks
Pertemuan 1 Pengenalan Code BlocksPertemuan 1 Pengenalan Code Blocks
Pertemuan 1 Pengenalan Code Blocks
 
Kubernetes Fundamentals.pptx
Kubernetes Fundamentals.pptxKubernetes Fundamentals.pptx
Kubernetes Fundamentals.pptx
 
Presentasi c
Presentasi  cPresentasi  c
Presentasi c
 

Composer Explained [PHP Indonesia Meetup]