際際滷

際際滷Share a Scribd company logo
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!

More Related Content

Similar to Composer Explained [PHP Indonesia Meetup] (20)

Pertemuan 1
Pertemuan 1Pertemuan 1
Pertemuan 1
satriahelmy
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
Tutorial VB.Net
Tutorial VB.NetTutorial VB.Net
Tutorial VB.Net
gofur siddiq
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
eddie Ismantoe
Besut Kode - Workshop 2
Besut Kode - Workshop 2Besut Kode - Workshop 2
Besut Kode - Workshop 2
John Vandenberg
Tugas rekweb 4
Tugas rekweb 4Tugas rekweb 4
Tugas rekweb 4
ricoadityaputra
Pemrograman dasar
Pemrograman dasarPemrograman dasar
Pemrograman dasar
smktamansiswabdg
201012101edit
201012101edit201012101edit
201012101edit
Hibaten Wafiroh
Pengenalan Algoritma Komputer
Pengenalan Algoritma KomputerPengenalan Algoritma Komputer
Pengenalan Algoritma Komputer
Salman's Education Center
Clean Code - Clean Comments
Clean Code - Clean CommentsClean Code - Clean Comments
Clean Code - Clean Comments
Adam Mukharil Bachtiar
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
01 - Basics of C++01 - Basics of C++.pptx
01 - Basics of C++01 - Basics of C++.pptx01 - Basics of C++01 - Basics of C++.pptx
01 - Basics of C++01 - Basics of C++.pptx
riancrypt
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
Kubernetes Kelas Lama untuk mahasiswa.pptx
Kubernetes Kelas Lama untuk mahasiswa.pptxKubernetes Kelas Lama untuk mahasiswa.pptx
Kubernetes Kelas Lama untuk mahasiswa.pptx
Ans Sembiring
PowerPointPGPRInformatika10B20222023Bab2_57275339-b220-45ed-8ed0-9d1b480d1c8c...
PowerPointPGPRInformatika10B20222023Bab2_57275339-b220-45ed-8ed0-9d1b480d1c8c...PowerPointPGPRInformatika10B20222023Bab2_57275339-b220-45ed-8ed0-9d1b480d1c8c...
PowerPointPGPRInformatika10B20222023Bab2_57275339-b220-45ed-8ed0-9d1b480d1c8c...
PetrusApriliyanto
Belajar framework code igniter xii rpl
Belajar framework code igniter xii rplBelajar framework code igniter xii rpl
Belajar framework code igniter xii rpl
Denny Yahya
Pertemuan 6 Mikroprosessor dan Mikrokontroler
Pertemuan 6 Mikroprosessor dan MikrokontrolerPertemuan 6 Mikroprosessor dan Mikrokontroler
Pertemuan 6 Mikroprosessor dan Mikrokontroler
Ahmad Nawawi, S.Kom
Bahasa Pemrograman
Bahasa PemrogramanBahasa Pemrograman
Bahasa Pemrograman
Bambang Karyadi
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
Tutorial VB.Net
Tutorial VB.NetTutorial VB.Net
Tutorial VB.Net
gofur siddiq
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
eddie Ismantoe
Besut Kode - Workshop 2
Besut Kode - Workshop 2Besut Kode - Workshop 2
Besut Kode - Workshop 2
John Vandenberg
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
01 - Basics of C++01 - Basics of C++.pptx
01 - Basics of C++01 - Basics of C++.pptx01 - Basics of C++01 - Basics of C++.pptx
01 - Basics of C++01 - Basics of C++.pptx
riancrypt
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
Kubernetes Kelas Lama untuk mahasiswa.pptx
Kubernetes Kelas Lama untuk mahasiswa.pptxKubernetes Kelas Lama untuk mahasiswa.pptx
Kubernetes Kelas Lama untuk mahasiswa.pptx
Ans Sembiring
PowerPointPGPRInformatika10B20222023Bab2_57275339-b220-45ed-8ed0-9d1b480d1c8c...
PowerPointPGPRInformatika10B20222023Bab2_57275339-b220-45ed-8ed0-9d1b480d1c8c...PowerPointPGPRInformatika10B20222023Bab2_57275339-b220-45ed-8ed0-9d1b480d1c8c...
PowerPointPGPRInformatika10B20222023Bab2_57275339-b220-45ed-8ed0-9d1b480d1c8c...
PetrusApriliyanto
Belajar framework code igniter xii rpl
Belajar framework code igniter xii rplBelajar framework code igniter xii rpl
Belajar framework code igniter xii rpl
Denny Yahya
Pertemuan 6 Mikroprosessor dan Mikrokontroler
Pertemuan 6 Mikroprosessor dan MikrokontrolerPertemuan 6 Mikroprosessor dan Mikrokontroler
Pertemuan 6 Mikroprosessor dan Mikrokontroler
Ahmad Nawawi, S.Kom

Composer Explained [PHP Indonesia Meetup]