Composer bağımlılıkları yönetmek için kullanılan bir PHP bağımlılık yöneticisidir. Projenizde kullanmak üzere ihtiyaç duyduğunuz ek paketleri sizin için kurup kullanıma hazır hale getirir. 

getcomposer.org resmi web sitesinde ilgili dokümanları inceleyerek de hızlı bir başlangıç yapabilirsiniz.Composer bir paket yöneticisi değil, bağımlı paketler yöneticisidir. Çünkü proje bazlı çalışır. Proje klasörünüz içinde örneğin vendor isimli bir klasör oluşturarak bağımlı olunan paket ve kütüphaneleri buraya indirip kurar. Varsayılan olarak global herhangi bir kurulum yapmaz. Bu nedenle, bağımlılık yöneticisidir diyebiliriz. Yani projenin bağımlı olduğu paketleri proje için kurar.

Composer’ın çözüm getirdiği durumlar şunlardır;

  • Bir çok kütüphaneye gereksinim duyan bir projeniz var ise,
  • Bu kütüphanelerden bazıları da başka kütüphanelere ihtiyaç duyuyorsa,

Composer;

  • Kullanmayı düşündüğünüz(bağımlı olduğunuz) kütüphaneleri tanımlamanızı sağlar,
  • Hangi paketin hangi versiyonunun kurulmasına ihtiyaç duyduğunuzu belirler ve bunları indirerek proje klasörünüze yerleştirir,
  • Tek bir komut ile tüm bağımlı kütüphaneleri güncellemenizi sağlar.

Bağımlı kütüphaneler ile çalışmaya başlamanın ilk adımı onları tanımlamaktır. Composer’ın temel kullanımı için proje klasörünüz içinde composer.json isimli bir dosyaya ihtiyacınız vardır. Bu dosya içinde json formatlı metin içerisinde ihtiyaç duyduğunuz paket ve versiyonu tanımlanır;

{
    "require": {
        "monolog/monolog": "2.0.*"
    }
}

Composer’ı kullanmaya başlamadan önce kurulumunu gerçekleştirmeliyiz. Terminalde;

$ php -v

komutunu çalıştırarak sisteminizde PHP kurulu olup olmadığını, eğer kurulu ise versiyonunu öğrenin.

Composer ile WP Geliştirme 1

 

 

 

Composer kurulumu için 2 yol vardır; yerel(projenizin bir parçası olur) ya da genel kurulum(tüm sistemde çalıştırılabilir).

Yerel kurulum yapmak için kurulum dosyasını proje klasörünüz içinde çalıştırırsınız. Kurulum bir takım PHP ayarlarını kontrol eder ve composer.phar PHP arşivi dosyasını proje klasörünün içine indirir. Bu dosya Composer’ın çalıştırılabilir dosyasıdır.

Şimdi bir klasör oluşturalım ve bu klasör içine geçelim;

$ mkdir composer; cd composer

Burada PHP ile Composer installer ve composer-setup.php kurulum dosyalarını klasör içine indirelim.

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

Daha sonra dosyanın hash değerinin doğru olduğunu kontrol edelim;

$ php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Bu komutun çıktısı ‘Installer verified’ olursa eğer bir sorun yok demektir. Yine PHP komutuyla kurulum dosyasını çalıştırabiliriz;

$ php composer-setup.php

Bu komut composer.phar dosyasını klasöre indirmenizi sağlayacaktır. Kurulum dosyası ile işimiz bittiğine göre, kaldırabiliriz;

$ php -r "unlink('composer-setup.php');"

Eğer Composer’ı proje dosyanız dışında da tüm sistemde kullanmak istiyorsanız, işletim sistemi çalıştırılabilir dosyalar klasörüne kopyalayabilirsiniz;

$ sudo mv composer.phar /usr/local/bin/composer

Artık herhangi bir klasör içinde 

$ composer

komutunu verirseniz, size kullanabileceğiniz parametreleri tanıtan bir yardım dosyası görüntüleyecek ve kullanılabilir olduğunu gösterecektir.

Bunların içinden en sık kullanılacak olan install parametresidir. İçinde composer.json dosyası bulunan bir proje klasöründe bu parametre ile composer’ı çalıştırdığınızda, tanımlanmış olan bağımlı kütüphaneleri indirip proje klasörü içine kullanılabilir şekilde konumlandıracaktır.

Örnek olması için mevcut oluşturduğumuz klasör içinde örnek json dosyamızı kullanarak Composer kullanımına göz atalım. Proje klasörümüz içinde;

$ nano composer.json

komutunu vererek yeni bir json dosyası oluşturalım ve içine daha önce örnek olarak verdiğimiz monolog paketini yerleştirelim.

Bu paketi indirip ilgili klasör içine yerleştirmek için terminalde klasör içindeyken;

$ composer install

komutunu verelim.

Eğer bağımlı paketin indirilip kurulmasını engelleyen bir durum var ise sizi uyaracaktır;

Composer ile WP Geliştirme 2

Örneğin bizim sistemimizde PHP’nin o tarihteki en son sürümü olan PHP 8.0.8 versiyonu kurulu ama monolog paketi PHP 7.2 versiyonu ile çalışıyormuş. Eğer bu paket projeniz için önemliyse projenizin üzerinde çalışacağı sunucunun PHP versiyonu bununla uyumlu olmalıdır.

Bir başka örnekle biz yolumuza devam edelim. jQuery paketi için composer.json dosyamızı şu şekilde düzenlediğimizi varsayalım;

{
   "require": {
       "components/jquery": "1.9.*"
   }
}

Terminal penceresinde;

$ composer install

komutunu çalıştırdığımızda kurulumun başarılı olduğunu ve proje klasörümüz içinde composer.lock ve belirlediğimiz components dizini altında jQuery yer aldığını görüyoruz;

Composer ile WP Geliştirme 3

 

 

 

 

 

 

composer.json dosyamız içinde kurulmasını istediğimiz paketin versiyonunu belirlediğimizi fark etmişsinizdir. 1.9.x olarak jQuery paketinin 1.9 majör versiyonunun en güncel minör versiyonunu kurmasını istediğimizi belirttik.

Gerçekten de kurulumdan sonra composer.lock dosyasını terminalde açıp inceleyecek olursak, 

Composer ile WP Geliştirme 4

jQuery’nin 1.9.1 versiyonunun kurulduğunu görürüz.

Composer’ın bu şekilde versiyon kontrol sistemleri ile ne şekilde entegre çalıştığını görmek önemlidir. Bunun için proje klasörümüzde bir git deposu oluşturalım;

$ git init .

Şimdi durumu incelemek için;

$ git status

komutunu verdiğimizde henüz hiç bir dosyanın git tarafından izlenmediğini görürüz;

Composer ile WP Geliştirme 5

 

 

 

 

 

 

Şimdi terminalde,

$ git add composer.json composer.lock

komutunu vererek versiyon kontrol sisteminin json ve lock dosyalarını değişikliklere karşı izlemesini sağlıyoruz. Bu işlem, bir ekip ile birlikte aynı proje üzerinde çalışıyorken önemlidir. Bu sayede herkes kendi yerel bilgisayarındaki geliştirme ortamında tam olarak aynı paket versiyonları ile çalıştıklarından emin olur. 

Tabii, composer kullanırken hangi paketlerin nereye kurulacağını belirleyen composer.json ve hangi versiyonlarının kurulduğunu gösteren composer.lock dosyaları takip etmek için yeterlidir. Ancak indirilen paketlerin bulunduğu klasörleri git versiyon kontrol sistemine dahil etmeye ve takip etmeye gerek yoktur. Her developer bu bağımlı olan paketleri composer ile kendi geliştirme ortamına indirip kullanacaktır zaten. Öyleyse bu klasörlerin takip edilmediğini garanti altına almak için .gitignore dosyası içine yollarını ekliyoruz. Proje klasörü içinde .gitignore dosyası oluşturup metin düzenleyiciyle açarak bağımlı paketler klasörlerini ekliyoruz;

$ nano .gitignore

Composer ile WP Geliştirme 6

 

 

 

Tekrar git durumunu kontrol ettiğimizde;

$ git status

Composer ile WP Geliştirme 7

 

 

 

 

 

 

 

 

.gitignore içine eklediğimiz klasörlerin artık görünmediğini, takip edilen dosyalarınızın commit edilmeyi beklediğini, takip edilmeyen dosya ve klasörleri de kırmızı olarak göreceksiniz.

Şimdi bir geliştirici bu depoyu klonladığında yalnızca composer.json ve composer.lock dosyasını alacaktır. Aldığı bu klasör içinde de “composer install” komutunu çalıştırmak tüm proje bağımlı paketlerinin ve doğru versiyonlarının kurulumu için yeterli olacaktır. Ayrıca bir paketin yeni versiyonunu kullanmak istediğinizde güncelleme için sadece tek bir dosyayı değiştirmeniz yeterli olacaktır.

Composer’ın bir başka avantajı da temel composer deposu olan packagist.org web sitesidir. Burada paketler ve o paketleri projenizde kullanmak için nasıl tanımlayacağınız ile ilgili bilgilere ulaşabilirsiniz.

Composer ile WP Geliştirme 8

 

 

 

 

 

 

 

Eğer composer.json dosyasına yeni paketler eklerseniz;

{
   "require": {
       "components/jquery": "1.9.*",
       "doctrine/common": "3.1.2"
   }
}

ve tekrar kurulum yaparak bu paketleri projenize eklemek isterseniz

$ composer install

Composer ile WP Geliştirme 9

 


uyarısını verdiğini görürsünüz. Çünkü önce composer.json içinde yaptığınız değişikliklerin composer.lock dosyasına işlenmesi gerekiyor. Bunun içinde önce,

$ composer update

komutunu vermelisiniz. İlk kurulumdan sonra yeni paketler eklemek istediğinizde kurulum için bu komut kullanılır.

Benzer şekilde kurulu olan herhangi bir paketin versiyonunu değiştirmek istediğinizde yine composer.json dosyasında bu değişikliği yaptıktan sonra update komutuyla yeni versiyonun kurulumunu gerçekleştirebilirsiniz. 

{
   "require": {
       "components/jquery": "3.5.1",
       "doctrine/common": "3.1.2"
   }
}

Ancak dilerseniz sadece versiyonunu değiştirdiğiniz paketin kurulumunu yapmak için bu paketi özellikle belirtebilirsiniz;

$ composer update components/jquery