SlideShare 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

PDF
Storytelling For The Web: Integrate Storytelling in your Design Process
PDF
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
PDF
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
PDF
2024 Trend Updates: What Really Works In SEO & Content Marketing
PDF
Bdd dengan php dan selenium
PPTX
Panada: An Introduction by Iskandar Soesman
PDF
10th php indonesia surabaya meetup
ODP
Surabaya meeetup git
Storytelling For The Web: Integrate Storytelling in your Design Process
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
2024 Trend Updates: What Really Works In SEO & Content Marketing
Bdd dengan php dan selenium
Panada: An Introduction by Iskandar Soesman
10th php indonesia surabaya meetup
Surabaya meeetup git

Recently uploaded (8)

PPTX
Implementasi Microservices pada Manufaktur
DOCX
Keutuhan Aplikasi Konsep dan Praktik dalam Upaya menciptakan aplikasi Anti Vi...
PPTX
Materi_Array_Karakter_String untuk kelas XI sma.pptx
DOCX
Antivirus Versi.FULL.JALiN.KB.PRO Keutuhan Aplikasi Konsep dan Praktik dalam ...
PPTX
PEMAHAMAN MAPEL KODING DAN KECERDASAN ARTIFICIAL
PPTX
Peranan AI dalam Dunia Pendidikan dan Industri Aplikasinya
PPTX
PERANCANGAN DAN PENGEMBANGAN VIDEO GAME SEBAGAI MEDIA TERAPI DEPRESI
PPT
pengantar-sistem-informasi manajemen.ppt
Implementasi Microservices pada Manufaktur
Keutuhan Aplikasi Konsep dan Praktik dalam Upaya menciptakan aplikasi Anti Vi...
Materi_Array_Karakter_String untuk kelas XI sma.pptx
Antivirus Versi.FULL.JALiN.KB.PRO Keutuhan Aplikasi Konsep dan Praktik dalam ...
PEMAHAMAN MAPEL KODING DAN KECERDASAN ARTIFICIAL
Peranan AI dalam Dunia Pendidikan dan Industri Aplikasinya
PERANCANGAN DAN PENGEMBANGAN VIDEO GAME SEBAGAI MEDIA TERAPI DEPRESI
pengantar-sistem-informasi manajemen.ppt
Ad
Ad

Composer Explained [PHP Indonesia Meetup]