Tanıtım
Composer PHP için bağımlılık yönetim aracıdır. Projenizle ilişkili kütüphanelerleri yönetmenizi (yükleme/güncelleme) sağlar.
Bağımlılık Yönetimi
Composer Linux işletim sistemlerinde kullanılan Yum veya Apt gibi bir paket yöneticisi değildir. Paketler ve kütüphaneleri kullanır ancak proje tabanlıdır, onları projenizdeki vendor
klasörüne yükler. Varsayılan olarak hiçbir şeyi genel (kütüphaneler kullanıcı klasörünüze yüklenir ve oradan kullanılır.) yüklemez. Bu nedenle bağlımlılık yöneticisidir.
Bu düşünce yeni değildir ve Composer Nodejs paket yöneticisi npm ve Ruby paket yöneticisi Bundler’dan ilham almıştır.
Sistem Gereksinimleri
Composer PHP 5.3.2 ve üstü versiyonlarda çalışır.
Composer çoklu platformdur ve Windows, Linux, OSX üzerinde aynı şekilde çalışır.
Kurulum – Linux / Unix / OSX
Çalıştırılabilir Composer’ı Kurulumu
Composer komut satırından direkt olarak çalıştırabileceğiniz kolay kurulum sağlar.
Composer projenize yerel olarak veya sistem üzerinden genel çalıştırabileceğiniz şekilde iki türlü tüklenebilir.
Yerel
Composer proje klasöründe çalıştırılmak istendiğinde yerel olarak kurulur.
1 |
curl -sS https://getcomposer.org/installer | php |
Not: Yukarıdaki yöntem işe yaramazsa yükleyiciyi indirmek için
php
‘yi kullanabilirsiniz.
1 |
php -r "readfile('https://getcomposer.org/installer');" | php |
Yükleyici birkaç php ayarını kontrol edecek ve composer.phar
dosyasını proje klasörünüze çekecektir. Bu dosya Composer kütüphanesidir. PHAR (PHP arişivi) komut satırından çalıştırılabilir.
Artık php composer.phar
şeklinde çalıştırabilirsiniz.
Genel
Composer PHAR’ı istediğiniz yere koyabilirsiniz. PATH
ile tanımladığınız bir yere koydunuzda her yerden ulaşılabilir.
Aşağıdaki komut composer
‘ı sisteminize genel kullnaabileceğiniz şekilde yükleyecek.
1 2 |
curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer |
Not: mv satırını çalıştırırken yerkilendirmeden dolayı hatayla karşılaştıysanız aşağıdaki şekilde deneyin.
1 |
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer |
Not: Bazı OSX versiyonlarında
/usr
klasörü varsayılan olarak mevcut değildir. “/usr/local/bin/composer: No such file or directory” şeklinde bir hata alırsanız işleme devam etmeden önce bu klasörümkdir -p /usr/local/bin
komutuyla elle oluşturun.
PATH
ile ilgili data fazla bilgi için Wikipedia makalesini okuyun veya Google’ı kullanın.
Şimdi Composer’ı çalıştırmak için php composer.phar
yerine composer
kullanabilirsiniz.
Kurulum – Windows
Yükleyiciyi Kullanarak
Bilgisayarınıza compsoer yüklemek için en kolay yoldur.
Composer-Setup.exe dosyasını indirin ve çalıştırın. Composer’ın en son versiyonu yüklenecek ve PATH
ayarlarınız yapılacak ve böylece herhangi bir klasörde terminale composer
yazarak kullanabileceksiniz.
Note: Açık terminalleriniz varsa kapatın. Test için yeni bir terminal kullanın.
PATH
değeri yalnızca terminal başladığında alınır.
Elle Yükleyerek
1 2 |
C:\Users\username>cd C:\bin C:\bin>php -r "readfile('https://getcomposer.org/installer');" | php |
Not: Çalışmasında bir sorun yaşıyorsanız
http
url kullanın veya php.ini dosyanızdan php_openssl.dll i aktif edin.
composer.phar
dosyasının yanında yeni bir composer.bat
dosyası oluşturun.
1 |
C:\bin>echo @php "%~dp0composer.phar" %*>composer.bat |
Klasörünüz PATH
değişkeninde yoksa ekleyin.
Terminali kapatın. Yeni terminalle test kullanımı:
1 2 |
C:\Users\username>composer -V Composer version 27d8904 |
Temel Composer Kullanımı
Artık kullanmanıza hazır bir Composer’ınız var. Temel kullanım için monolog/monolog
kütüphanesini yükleyeceğiz.
composer.json
: Proje Hazırlığı
Composer’ı projenizde kullanmadan önce tüm ihtiyacınız olan composer.json
dosyasıdır. Bu dosya projenizin bağlımlılıklarını tanımlar ve ön bilgiler de içerebilir.
require
Anahtarı
composer.json
da belitmeniz gereken ilk (ve sıkça) şey require
anahtarıdır. Basitçe Composer’a projenizin bağlı olduğu paketleri söylüyorsunuz.
1 2 3 4 5 |
{ "require": { "monolog/monolog": "1.0.*" } } |
Göreceğiniz gibi require
paket isimlerini (örneğin monolog/monolog
) versiyonlara tanımlayan (örneğin 1.0.*
) bir obje içerir.
Paket İsimleri
Paket ismi bir sahip (vendor) ve proje isminden oluştur. Bu, eş isimleri önler. İki farklı kullanıcının igorw/json
, seldaek/json
şeklinde aynı isimde kütüphane oluşturmasını sağlar.
Paket Versiyonları
Örneğimizde Monolog’un 1.0.*
versiyonuna ihtiyacımız vardır. Bu 1.0
geliştirme apağındaki herhangi bir bir versiyondur.
Bağımlılıkların Kurulumu
Projenizde tanımlı bağlımlılıkları yüklemek için install
komutunu çalıştırın.
1 |
php composer.phar install |
Bu işlem monolog/monolog
‘un versyion kusıtlamasıyla verilen son versiyonunu vendor
klasörüne indirir. Ek paketlerin vendor
şeklinde isimlerindirilmiş bir klasöre konulması kolaylık sağlar. Bu durumda Monolog vendor/monolog/monolog
içeriğinde olacak.
İpucu: Projenizde git kullanıyorsanız muhtemelen
.gitignore
dosyanızavendor
ekleyeceksiniz. Tüm kodları proje deponuza eklemek istemezsiniz.
install
komutunun composer.lock
dosyası oluşturduğu da dikkatinizi çekecek.
composer.lock – Kilit Dosyası
Bağımlıkları yükledikten sonra Composer composer.lock
dosyasına yüklenenlerin listesini yazar.
Packagist
Packagist ana Composer deposudur. Bir Composer deposu basitçe bir paket kaynağıdır.
Packagist websitesine giderek paketlere gözatabilir ve arayabilirsniz.
Composer kullanan tüm açık kaynak projeler için paketlerin Packagist’te yayınlanması önerilir.
Otomaik Yükleme (Autoloading)
Otomatik yükleme bilgileri belirtilen kütüphaneler için Composer vendor/autoload.php
dosyası üretir. Basiçe bu dosyayı kodunuza dahil edebilir ve uğraşmadan otomatik yükleme yapabilirsiniz.
1 |
require 'vendor/autoload.php'; |
Bu 3rd Party kodların çok kolay kullanılmasını sağlar. Örneğin: Projeniz Monolog
‘a bağımlı olsun, doğrudan onun sınıflarını kullanma başlayabilirsiniz, otomatik yükleneceklerdir.
1 2 3 |
$log = new Monolog\Logger('name'); $log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING)); $log->addWarning('Foo'); |
Kendi kodlarınızı da autoload
alanını kullanarak otomatik yükleyiciye ekleyebilrsiniz.
1 2 3 4 5 |
{ "autoload": { "psr-4": {"NameSpaceiniz\\": "src/"} } } |
Composer NameSpaceiniz
namespace için bir PSR-4 kaydı oluşturacaktır.
Namespace’i klasöre aratan bir yol atarsınız. src
klasörü projenizin kök klasöründe ve vendor
ile aynı yerde olmalıdır. Örneğin src/ClassIsim.php
dosyasının NameSpaceiniz\ClassIsim
içermesi.
autolad
alanını ekledikten sonra vendor/autoload.php
dosyasının tekrar oluşturulması için dump-autoload
tekrar çalıştırılmalıdır.
PSR-4 otomatik yüklemeye ek olarak Composer PSR-0 da destekler.
Note: Composer kendi otoyükleyicisini barındırır. Eğer kullanmak istemiyorsanız
vendor/composer/autoload_*.php
dosyasını codunuza dahil edin ve kendi otomatik yükleyicinizi ayarlayın.