composer ile php'de bağımlılık yönetimi

32
Composer ile PHP'de Bağımlılık Yönetimi

Upload: adililhan

Post on 21-Jul-2015

160 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Composer ile PHP'de Bağımlılık Yönetimi

Composer ile PHP'de Bağımlılık Yönetimi

Page 2: Composer ile PHP'de Bağımlılık Yönetimi

Adil İlhanYazılım Geliştirici

www.adililhan.com@adil_ilhan

Page 3: Composer ile PHP'de Bağımlılık Yönetimi

Neden Bağımlılık Yönetimi?

● Projelerin third-party paketlere er ya da geç işi düşüyor

● Paket arttıkça takibi zorlaşır– Güncellemeler

● Taşınabilirlik

● Paketlerin VCS'de kapladıkları alanın çokluğu

Page 4: Composer ile PHP'de Bağımlılık Yönetimi

Composer

● 2012 Nisan ilk sürüm olan 1.0.0-alpha1 yayınlandı● 350+ contributor (katkıda bulunanlar)● 44+ bin paket● 180+ bin version● packagist.org

Aralık 2014

Page 5: Composer ile PHP'de Bağımlılık Yönetimi

PEAR vs.(?) Composer

● PEAR bir paket yöneticisidir

● Composer ise bir bağımlılık yöneticisidir.

Page 6: Composer ile PHP'de Bağımlılık Yönetimi

Topluluğa Faydaları

● Object Oriented mimari kullanımı arttı

● Third-party uygulamaların dahil edilmesi kolaylaştı

● ...

Page 7: Composer ile PHP'de Bağımlılık Yönetimi

Nasıl?

● curl -sS https://getcomposer.org/installer | php

Page 8: Composer ile PHP'de Bağımlılık Yönetimi

Bu kadar mı?

Daha yeni başlıyor :)

Page 9: Composer ile PHP'de Bağımlılık Yönetimi

Can damarı: composer.json

● Composer'da tüm işlemlerin yürüdüğü dosya

● Paketler yapıcılar da proje sahipleri de burayı kullanır

Page 10: Composer ile PHP'de Bağımlılık Yönetimi

İlk composer.json

● composer init– Globale yüklenmemişse: php composer.phar

● Ekstra bir yere ihtiyaç duymadan projeye uygun paketler seçilebilir

Page 11: Composer ile PHP'de Bağımlılık Yönetimi

En sade composer.json örneği

Page 12: Composer ile PHP'de Bağımlılık Yönetimi

Versiyonlardaki İşaretler

● ~3.2 der ki: 3.2 ve üstü, 4.0'dan aşağı.

● 3.2.* der ki: 3.2 ve üstü, 3.3'ten aşağı.

Page 13: Composer ile PHP'de Bağımlılık Yönetimi

Paket Güncellemeleri

● composer update– Ne var ne yok hepsini günceller

● composer update monolog/monolog– Sadece Monolog'u günceller

● Bir paket eklenip / silinmişse?– Tek paket update edilse bile bu ekleme silme işlemi

uygulanır

Page 14: Composer ile PHP'de Bağımlılık Yönetimi

Paket Bulma / Yükleme

● Packagist.org● Require● Search

Page 15: Composer ile PHP'de Bağımlılık Yönetimi

İşin Kolayı: require

● JSON düzenlemekten kurtarır

● Ekstra install update gibi işlemlerden kurtarır

● Parametre geçmezse arama imkanı sunar

Page 16: Composer ile PHP'de Bağımlılık Yönetimi

İmdamıza Yetişen Özellik: Config

● “Nasıl yapacağım?” sorularının birçoğuna cevap

● Varsayılan işlemleri config özelliği ile değiştirebilirsiniz

Page 17: Composer ile PHP'de Bağımlılık Yönetimi

İşler Yolunda mı: Diagnose

Page 18: Composer ile PHP'de Bağımlılık Yönetimi

Acil Paket Forklama!

● composer create-project laravel/framework calisma_dizini 4.2.1

● Değişiklikleri kendi reponuzu pushlayıp, proje'ye clone'layabilirsiniz

Page 19: Composer ile PHP'de Bağımlılık Yönetimi

3 Adımda Paket Yapımı

Page 20: Composer ile PHP'de Bağımlılık Yönetimi

1. Adım: Dizinleri Ayarlamak

● Ana dizin: /var/www/owtg

● Kaynak dizin: /var/www/owtg/src/

Page 21: Composer ile PHP'de Bağımlılık Yönetimi

2. Adım: Sınıf Yazımı

● Sınıf yolu: /var/www/owtg/src/Merhaba.php

Page 22: Composer ile PHP'de Bağımlılık Yönetimi

3. Adım: Composer.json

● Composer.json yolu: /var/www/owtg/composer.json

Page 23: Composer ile PHP'de Bağımlılık Yönetimi

Örnek Kullanım

Page 24: Composer ile PHP'de Bağımlılık Yönetimi

Canlı Ortama Yükleme

● Composer, vendor dizinini VCS'de tutmayı önermiyor.

● Production'a Composer ile yükleme yapmayın!

Page 25: Composer ile PHP'de Bağımlılık Yönetimi

Canlı Ortama Yükleme

● Autoload dosyasını optimize edin– composer dump-autoload -o

● Fark?– Optimize kod:

– Optimize olmayan kod:

Page 26: Composer ile PHP'de Bağımlılık Yönetimi

Gizemli Dosya: composer.lock

● Yüklenen paketlerin version, kaynak, vcs id bilgisi vs. olur

● Gitignore'a eklenmeli mi?– “Commit your application's composer.lock (along

with composer.json) into version control.”

Page 27: Composer ile PHP'de Bağımlılık Yönetimi

Birkaç soru...

Page 28: Composer ile PHP'de Bağımlılık Yönetimi

Yükleme nasıl olmalı?

● VCS geçmişine gerçekten ihtiyacınız var mı?– Varsa –prefer-source yoksa –prefer-dist

● Fark?●

Page 29: Composer ile PHP'de Bağımlılık Yönetimi

Ortama Göre Farklı Paketler?

● Composer, ortam (environment) özelliği destekliyor

– COMPOSER=composer.production.json composer install

– COMPOSER=composer.development.json composer install

Page 30: Composer ile PHP'de Bağımlılık Yönetimi

Yavaş Çalışıyor(du)

Page 31: Composer ile PHP'de Bağımlılık Yönetimi

php -d zend.enable_gc=0 /usr/bin/composer

Page 32: Composer ile PHP'de Bağımlılık Yönetimi

Teşekkürler...

www.adililhan.com

@adil_ilhan