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

Preview:

Citation preview

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

Adil İlhanYazılım Geliştirici

www.adililhan.com@adil_ilhan

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

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

PEAR vs.(?) Composer

● PEAR bir paket yöneticisidir

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

Topluluğa Faydaları

● Object Oriented mimari kullanımı arttı

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

● ...

Nasıl?

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

Bu kadar mı?

Daha yeni başlıyor :)

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

İlk composer.json

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

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

En sade composer.json örneği

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ğı.

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

Paket Bulma / Yükleme

● Packagist.org● Require● Search

İşin Kolayı: require

● JSON düzenlemekten kurtarır

● Ekstra install update gibi işlemlerden kurtarır

● Parametre geçmezse arama imkanı sunar

İ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

İşler Yolunda mı: Diagnose

Acil Paket Forklama!

● composer create-project laravel/framework calisma_dizini 4.2.1

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

3 Adımda Paket Yapımı

1. Adım: Dizinleri Ayarlamak

● Ana dizin: /var/www/owtg

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

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

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

3. Adım: Composer.json

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

Örnek Kullanım

Canlı Ortama Yükleme

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

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

Canlı Ortama Yükleme

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

● Fark?– Optimize kod:

– Optimize olmayan kod:

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.”

Birkaç soru...

Yükleme nasıl olmalı?

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

● Fark?●

Ortama Göre Farklı Paketler?

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

– COMPOSER=composer.production.json composer install

– COMPOSER=composer.development.json composer install

Yavaş Çalışıyor(du)

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

Teşekkürler...

www.adililhan.com

@adil_ilhan

Recommended