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
/usrklasö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/binkomutuyla elle oluşturun.
PATHile 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.
PATHdeğ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
httpurl 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
.gitignoredosyanızavendorekleyeceksiniz. 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_*.phpdosyasını codunuza dahil edin ve kendi otomatik yükleyicinizi ayarlayın.