Composer ile PHP'de Bağımlılık Yönetimi
-
Upload
adililhan -
Category
Technology
-
view
152 -
download
4
Transcript of Composer ile PHP'de Bağımlılık Yönetimi
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