logo-composer-transparentPHP frameworklerinin sayısının artmasıyla birlikte, bu frameworkler için geliştirilen/özelleştirilen bileşenlerin sayısı da hızla artmıştır. Fakat PHP’nin kaotik dünyası yüzünden durum bileşen geliştiriciler açısından kısa sürede başedilemez bir durum haline gelmişti.

Bu durumun üstesinden gelmek için büyük framework geliştiricileri bir araya gelecek php-fig (PHP Framework Interop Group) adında bir organizasyon kurdular ve hepimizin işine yarayacak PSR- önekiyle başlayan belirli standartlar oluşturdular. Konumuz composer olduğu için bizi ilgilendiren iki standart hakkında kısa notlar düşüp bu bölümü daha fazla uzatmayacağım. İlgilenen arkadaşların http://www.php-fig.org/ adresini ziyaret etmesini ve diğer standartları da inceleyip mümkünse uygulamaya başlamalarını öneririm.

Bizi ilgilendiren PSR-0 Autoloading ve PSR-4 Improved Autoloading standartları sayesinde frameworkler gerekli olan sınıfları nerede bulacaklarını bilmekte ve ihtiyaç duyduklarında otomatik olarak yükleyebilmektedir. Bu sayede büyük frameworklerin birçoğu aynı bileşenleri kullanabilir hale geldi.

Composer Nedir?

En basit tabiriyle Composer PHP için geliştirilmiş bir Paket Yöneticisi‘dir. Bir framework’ün veya bir bileşenin bağımlı olduğu diğer bileşenleri ve gereksinimleri yönetir. Bununla birlikte kendi içinde gelen PSR destekli autoloader sayesinde yeni yüklenen bileşenlerin proje içinde otomatik olarak kullanılmasına olanak sağlar.

Composer Nasıl Kurulur?

*nix sistemlerde aşağıdaki kodları çalıştırırsanız, composer global olarak kurulacaktır.

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

Windows üzerinde ise buradan indireceğiniz setup dosyasını çalıştırarak kurulumu tamamlayabilirsiniz.

Daha detaylı kurulum açıklamalarını getcomposer.org sitesinde bulabilirsiniz.

Composer Nasıl Kullanılır?

Kurulumu tamamladığınızı varsayarsak, projenizde composer kullanmak için öncelikle projenize birkaç ufak eklenti yapmanız gerekiyor.

composer.json dosyası

composer.json dosyası composer tarafından okunan dosyadır. Projenizin hangi bileşenlere ihtiyaç duyduğunu belirten json formatında bir dosyadır.

Çok basit bir composer.json dosyası aşağıdaki gibi görünmektedir.

{
  "require": {
    "monolog/monolog": "1.6.*@dev",
    "teknomavi/tcmb": "dev-master"
  }
}

“require” terimi gereksimin anlamına gelmektedir. Yukarıdaki örnekte projenin “monolog/monolog” kütüphanesinin 1.6. ile başlayan en güncel sürümüne ve “teknomavi/tcmb” kütüphanesinin bulunan en güncel sürümüne ihtiyaç duyduğu belirtilmektedir. Açık kaynak olarak geliştirilen birçok proje/bileşen hali hazırda composer desteklemektedir. Bunu anlamanın en kolay yolu, projenin kök dizininde “composer.json” dosyasının olmasıdır.

Projenizin ihtiyaç duyduğu tüm bileşenleri yukarıdaki örnekteki gibi tanımlayabilirsiniz. Hangi bileşen için ne yazmanız gerektiğini nasıl bulacağınızı aşağıda anlatacağım

vendor/autoload.php

Bu dosya composer çalıştırıldığında otomatik olarak oluşturulur ve projeniz içinde bileşenleri kullanmadan önce mutlaka çağrılması gerekmektedir.

require "vendor/autoload.php";

Yukarıdaki satırı kodunuza ekledikten sonra composer hangi dosyayı nerede arayacağını bulabilmekte ve ilgili sınıf çağrıldığında otomatik olarak dosyanın yüklenmesini sağlayabilmektedir.

Composer Nasıl Kullanılır?

Composer kullanmak için projenizin kök dizininde aşağıdaki kodu çalıştırmanız yeterlidir.

php \path\to\composer.phar install

Eğer global bir kurulum yaptıysanız aşağıdaki komutu hatırlaması daha kolaydır.

composer install

composer birçok parametre ile birlikte gelmektedir. Bunlardan benim genelde ihtiyaç duyduklarım;

  • –no-dev” : yüklenecek paketlerin test gereksiminlerinin yüklenmesini engeller. Bu sayede daha temiz bir kurulumunuz olur.
  • –prefer-source” : yüklenecek paketin kaynağını önceliklendirir. Bu sayede önbellekte lokal kopyanız olsa bile en güncel halini indirir.

Çoğu projede composer’ı aşağıdaki şekilde çalıştırarak problemsiz bir kurulum gerçekleştirebilirsiniz.

php c:\wamp\composer\composer.phar update --no-dev --prefer-source

Packagist.org Nedir?

Herşeyi yaptınız ve hazırsınız. Peki paketleri nasıl bulacaksınız?

Packagist.org, composer tarafından kullanılan ana dizindir. Üstteki composer.json dosyasında yazdığımız gereksinimleri bu servis üzerinde sorgular ve nereden hangi dosyaların indirilmesi gerektiğini bulur. “monolog/monolog” örneğinden gidecek olursak; composer sorgulama yaptığında “https://packagist.org/packages/monolog/monolog” paketine ulaşır. Gereksinimimiz olan “1.6.*@dev” sürümü ile eşleşen sürümü bulur ( 1.6.0 ) ve bu kodları indirerek vendor klasörünün altına yükler.

Projenize ekleyeceğiniz bileşenler için yapmanız gerekenler;

  1. Birkaç anahtar kelime ile arama yapmak ( projenin adı, ne işe yaradığı vs. )
  2. Eklemek istediğiniz paketi seçip sürümlerini görmek
  3. Eklemek istediğiniz sürümde require bölümünde yazan “monolog/monolog”: “1.12.*@dev” bölümünü  kendi composer.json dosyanıza eklemek
  4. Yukarıdaki composer update komutunu çalıştırmak.

Sonuç;

En basit şekilde composer ve packagist kullanımı hakkında ihtiyaç duyabileceğiniz bilgileri verdiğimi umuyorum. Composer PHP dünyasının en büyük eksiklerinden biri olan Merkezi Paket Yönetimi ihtiyacına çözüm oluyor. Gerek kullanım kolaylığı, gerekse destekçileri sayesinde çok kısa bir sürede standart haline geldi ve uzun süre gündemimizde kalacak gibi görünüyor.

Konuyla ilgili takıldığınız noktalar olursa soru sormaktan çekinmeyin.